jsp
<div class="state">
<span>등록</span>
<span id="countA"><c:out value="${countA}"/></span>
<span>접수</span>
<span id="countB"><c:out value="${countB}"/></span>
<span>진행중</span>
<span id="countC"><c:out value="${countC}"/></span>
<span>반려</span>
<span id="countD"><c:out value="${countD}"/></span>
<span>완료</span>
<span id="countE"><c:out value="${countE}"/></span>
</div>
controllers
@RequestMapping("/list.do")
public String boardList(Locale locale, @ModelAttribute("searchVO") BoardManageVO vo, Model model , HttpServletRequest request) throws Exception {
logger.debug("Call /manager/board/list.do");
try {
// 미인증 사용자에 대한 보안처리
LoginVO loginVO = getAuthInfo();
if( loginVO != null && !"".equalsIgnoreCase(loginVO.getUniqId()) ) {
logger.debug("loginId={}", loginVO.getUniqId() );
vo.setLoginId(loginVO.getUniqId());
vo.setLoginNm(loginVO.getName());
vo.setGroupId(loginVO.getGroupId());
vo.setGroupCode(loginVO.getGroupCode());
}else{
return "index";
}
if(vo.getBoardId().equals("")) {
BoardMasterVO bvo = new BoardMasterVO();
bvo.setGroupId(loginVO.getGroupId());
List boardList = boardMasterService.groupBoardList(bvo);
if(null != boardList && boardList.size()>0) {
Map board = (Map) boardList.get(0);
vo.setBoardId(SF_StringUtil.isNullToString(board.get("board_id")));
}else {
return "index";
}
}
BoardMasterVO masterVO = new BoardMasterVO();
masterVO.setBoardId(vo.getBoardId());
masterVO.setGroupId(vo.getGroupId());
Map boardMasterVO = boardMasterService.selectBoardMaster(masterVO);
if(SF_StringUtil.isNullToString(boardMasterVO.get("notice_at")).equals("Y")) {
vo.setNoticeUse(true);
vo.setSearchNoticeAt("Y");
Map noticeList = boardManageService.selectArticleList(vo);
model.addAttribute("noticeList", noticeList.get("resultList"));
vo.setSearchNoticeAt("N");
}else {
vo.setSearchNoticeAt("");
}
Map resultMap = boardManageService.selectArticleList(vo);
List<Map> boardList = (List<Map>) resultMap.get("resultList");
List<Map> resultList = new ArrayList();
for(Map result : boardList) {
String fileId = SF_StringUtil.isNullToString(result.get("atch_file_id"));
if(!fileId.equals("")) {
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(fileId);
FileVO fileInfo = fileService.selectBoardFileList(fileVO);
result.put("fileList", fileInfo.getFileList());
result.put("imgFileList", fileInfo.getImgFileList());
result.put("atchFileList", fileInfo.getAtchFileList());
}
resultList.add(result);
}
//
// 상태별 카운트 가져오기
BoardManageVO cntVO = new BoardManageVO();
cntVO.setGroupId(vo.getGroupId());
cntVO.setBoardId(vo.getBoardId());
cntVO.setSearchState("A");
long countA = boardManageService.selectStateCnt(cntVO);
cntVO.setSearchState("B");
long countB = boardManageService.selectStateCnt(cntVO);
cntVO.setSearchState("C");
long countC = boardManageService.selectStateCnt(cntVO);
cntVO.setSearchState("D");
long countD = boardManageService.selectStateCnt(cntVO);
cntVO.setSearchState("E");
long countE = boardManageService.selectStateCnt(cntVO);
// 상태별 카운트 모델에 추가
model.addAttribute("countA", countA);
model.addAttribute("countB", countB);
model.addAttribute("countC", countC);
model.addAttribute("countD", countD);
model.addAttribute("countE", countE);
System.out.println("컨트롤러 출력 : " + countA);
model.addAttribute("resultList", resultList);
model.addAttribute("resultCnt", resultMap.get("resultCnt"));
model.addAttribute("pagination", resultMap.get("pagination"));
model.addAttribute("boardMasterVO", boardMasterVO);
} catch (Exception|Error e) {
logger.error(e);
}
return "manager/board/list";
}
vo랑 중복되지 않도록 cntVO를 새로 생성
BoardManageVO cntVO = new BoardManageVO();
cntVO.setSearchState("A");
long countA = boardManageService.selectStateCnt(cntVO);
>>state 가 A 일 때 서비스로 A를 보냄
--- service --
public long selectStateCnt(BoardManageVO vo) throws Exception {
logger.info("서비스"+vo.getSearchState());
System.out.println("서비스"+vo.getSearchState());
return boardManageDAO.selectStateCnt(vo);
}
컨트롤러에서 어떤값을 받았는지 확인 vo.getSearchState() 하면
컨트롤러에서 받은 값이 출력된다.
그리고 DAO로 A를 보낸다.
--DAO--
public long selectStateCnt(BoardManageVO vo) {
System.out.println("DAO :"+vo.getSearchState());
long resultCnt = 0;
// 상세코드 전체삭제
Query query = new Query();
query.addCriteria(Criteria.where("group_id").is(vo.getGroupId()));
query.addCriteria(Criteria.where("del_yn").is("N"));
query.addCriteria(Criteria.where("board_id").is(vo.getBoardId()));
//System.out.println("DAO !vo.getSearchState().equals(\"\"):"+!vo.getSearchState().equals(""));오류뜨네
System.out.println("셀렉트 : " + query.addCriteria(Criteria.where("state").is(vo.getSearchState())));
if (!vo.getSearchState().equals("")) {
query.addCriteria(Criteria.where("state").is(vo.getSearchState()));
}
try {
// 개수
resultCnt = mongoTemplate.count(query, Map.class, BOARD_COLLECTION);
} catch (Exception e) {
logger.error(e);
}
return resultCnt;
}
서비스에서 받은 A를 DAO에서 받아 데이터베이스에서 셀렉트 해야된다.
DAO에서도 마찬가지로 vo.getSearchState() 하면
A가 출력된다.
A를 데이터베이스에서 셀렉트 해야한다.
System.out.println("DAO !vo.getSearchState().equals(\"\"):"+!vo.getSearchState().equals(""));
결과는 true 이기 때문에 조건문 실행된다.
//음 밑에 프린트 오류뜨네
System.out.println("셀렉트 : " + query.addCriteria(Criteria.where("state").is(vo.getSearchState())));
where절에서 state의 A값을 셀렉한다.
System.out.println("DAO count : " + mongoTemplate.count(query, Map.class, BOARD_COLLECTION));
state의 A 값은 총 0개 이므로 resultCnt 에 담아 리턴한다.
그럼 컨트롤러로 0이 전달된다.
ABCDE 를 모두 컨트롤러에 적용시키면 한꺼번에 연산된다.
'SpringBoot' 카테고리의 다른 글
[Spring Boot] jstl 로 스크립트 줄이기 (0) | 2023.11.03 |
---|---|
jsp 스크립트 sec:authorize access (0) | 2023.11.02 |
어노테이션 (0) | 2023.09.22 |
MVC (0) | 2023.09.22 |
프로젝트 구조 (0) | 2023.09.22 |