From 25cae036c59837497d268814d9fbd26f86a8d5f1 Mon Sep 17 00:00:00 2001 From: moong Date: Tue, 25 Nov 2025 16:12:33 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EC=A1=B0=ED=9A=8C=ED=86=B5=EA=B3=84?= =?UTF-8?q?=20=EA=B2=80=EC=83=89=20=ED=99=94=EB=A9=B4=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DayAnswerController.java | 86 +- .../dayanswer/mapper/DayAnswerMapper.java | 11 + .../minwon/dayanswer/model/DayAnswerDto.java | 16 +- .../dayanswer/service/DayAnswerService.java | 6 + .../service/impl/DayAnswerServiceImpl.java | 131 ++- .../search/controller/SearchController.java | 50 ++ .../biz/search/mapper/SearchMapper.java | 14 + .../project/biz/search/model/SearchDto.java | 41 + .../biz/search/service/SearchService.java | 9 + .../service/impl/SearchServiceImpl.java | 28 + .../biz/minwon/DayAnswerMapper_maria.xml | 369 +++++++-- .../mapper/biz/search/SearchMapper_maria.xml | 69 ++ .../views/biz/minwon/dayanswer/dayanswer.jsp | 747 +++++++++--------- .../WEB-INF/views/biz/search/search.jsp | 264 +++++++ 14 files changed, 1330 insertions(+), 511 deletions(-) create mode 100644 src/main/java/go/kr/project/biz/search/controller/SearchController.java create mode 100644 src/main/java/go/kr/project/biz/search/mapper/SearchMapper.java create mode 100644 src/main/java/go/kr/project/biz/search/model/SearchDto.java create mode 100644 src/main/java/go/kr/project/biz/search/service/SearchService.java create mode 100644 src/main/java/go/kr/project/biz/search/service/impl/SearchServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/biz/search/SearchMapper_maria.xml create mode 100644 src/main/webapp/WEB-INF/views/biz/search/search.jsp diff --git a/src/main/java/go/kr/project/biz/minwon/dayanswer/controller/DayAnswerController.java b/src/main/java/go/kr/project/biz/minwon/dayanswer/controller/DayAnswerController.java index 7cb570d..80c9e7a 100644 --- a/src/main/java/go/kr/project/biz/minwon/dayanswer/controller/DayAnswerController.java +++ b/src/main/java/go/kr/project/biz/minwon/dayanswer/controller/DayAnswerController.java @@ -56,13 +56,11 @@ public class DayAnswerController { @PostMapping("/minwon/dayanswer/dayanswer-select.ajax") public ResponseEntity list(@ModelAttribute DayAnswerDto.Request.Search dto) { - dto.setTotalCount(0); - dto.setPagingYn("Y"); - - List result; + dto.setTotalCount(0); + dto.setPagingYn("N"); - result = dayAnswerService.selectAllDayAnswer(dto); + List result = dayAnswerService.selectAllDayAnswer(dto); return ApiResponseUtil.successWithGrid(result, dto); } @@ -131,57 +129,7 @@ public class DayAnswerController { HttpServletResponse response ) throws Exception { - // 검색 조건을 이용해 전체 리스트 조회 - List list = dayAnswerService.selectAllDayAnswer(dto); - - Workbook wb = new XSSFWorkbook(); - Sheet sheet = wb.createSheet("일별답변결과"); - int rowNo = 0; - - Row header = sheet.createRow(rowNo++); - header.createCell(0).setCellValue("메인코드"); - header.createCell(1).setCellValue("시군구코드"); - header.createCell(2).setCellValue("구분"); - header.createCell(3).setCellValue("접수일자"); - header.createCell(4).setCellValue("접수번호"); - header.createCell(5).setCellValue("처리자"); - header.createCell(6).setCellValue("전화번호"); - header.createCell(7).setCellValue("휴대폰"); - header.createCell(8).setCellValue("이메일"); - header.createCell(9).setCellValue("처리상태"); - header.createCell(10).setCellValue("답변내용"); - - for (DayAnswerDto.Response.cpMain rowData : list) { - Row row = sheet.createRow(rowNo++); - row.createCell(0).setCellValue(nvl(rowData.getAsMmcode())); - row.createCell(1).setCellValue(nvl(rowData.getAsSggcode())); - row.createCell(2).setCellValue(nvl(rowData.getAsIngb())); - row.createCell(3).setCellValue(nvl(rowData.getAsJsdate())); - row.createCell(4).setCellValue(nvl(rowData.getAsJsno())); - row.createCell(5).setCellValue(nvl(rowData.getAsUser())); - row.createCell(6).setCellValue(nvl(rowData.getAsTel())); - row.createCell(7).setCellValue(nvl(rowData.getAsCell())); - row.createCell(8).setCellValue(nvl(rowData.getAsEmail())); - row.createCell(9).setCellValue(nvl(rowData.getAsState())); - row.createCell(10).setCellValue(nvl(rowData.getAsText())); - } - - for (int i = 0; i <= 10; i++) { - sheet.autoSizeColumn(i); - } - - String fileName = URLEncoder.encode("일별답변결과.xlsx", StandardCharsets.UTF_8.name()) - .replaceAll("\\+", "%20"); - - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); - - wb.write(response.getOutputStream()); - wb.close(); - } - - private String nvl(String s) { - return s == null ? "" : s; + dayAnswerService.downloadExcel(dto, response); } @GetMapping("/minwon/dayanswer/history.ajax") @@ -194,4 +142,30 @@ public class DayAnswerController { System.out.println(" 결과건수 = " + (list != null ? list.size() : 0)); return list; } + @PostMapping("/minwon/dayanswer/update-all-state.ajax") + @ResponseBody + public Map updateAllState( + @ModelAttribute DayAnswerDto.Request.Search dto, + @RequestParam("newState") String newState) { + + int updated = dayAnswerService.updateAllState(dto, newState); + + Map result = new HashMap<>(); + result.put("updated", updated); + result.put("result", "success"); + return result; + } + + @PostMapping("/minwon/dayanswer/update-one-state.ajax") + @ResponseBody + public Map updateOneState( + @RequestParam("asMmcode") String asMmcode, + @RequestParam("newState") String newState) { + + int updated = dayAnswerService.updateOneState(asMmcode, newState); + Map result = new HashMap<>(); + result.put("updated", updated); + result.put("result", "success"); + return result; + } } diff --git a/src/main/java/go/kr/project/biz/minwon/dayanswer/mapper/DayAnswerMapper.java b/src/main/java/go/kr/project/biz/minwon/dayanswer/mapper/DayAnswerMapper.java index aada213..4632e6f 100644 --- a/src/main/java/go/kr/project/biz/minwon/dayanswer/mapper/DayAnswerMapper.java +++ b/src/main/java/go/kr/project/biz/minwon/dayanswer/mapper/DayAnswerMapper.java @@ -4,6 +4,7 @@ import go.kr.project.biz.minwon.dayanswer.model.DayAnswerDto; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import org.apache.ibatis.annotations.Param; @Mapper public interface DayAnswerMapper { @@ -19,4 +20,14 @@ public interface DayAnswerMapper { List selectHistoryasMmcode(String asMmcode); int insertAnswerHistory(DayAnswerDto.Request.Update dto); + + int updateAllState(@Param("search") DayAnswerDto.Request.Search dto, + @Param("newState") String newState); + + int updateOneState(@Param("asMmcode") String asMmcode, + @Param("newState") String newState); + + int selectAllDayAnswerCount(DayAnswerDto.Request.Search dto); + + List selectAllDayAnswerForExcel(DayAnswerDto.Request.Search dto); } diff --git a/src/main/java/go/kr/project/biz/minwon/dayanswer/model/DayAnswerDto.java b/src/main/java/go/kr/project/biz/minwon/dayanswer/model/DayAnswerDto.java index f74caf7..7e5ad40 100644 --- a/src/main/java/go/kr/project/biz/minwon/dayanswer/model/DayAnswerDto.java +++ b/src/main/java/go/kr/project/biz/minwon/dayanswer/model/DayAnswerDto.java @@ -17,11 +17,13 @@ public class DayAnswerDto { public static class Search extends PagingVO { + private String searchCondition; private String searchKeyword; private String searchStartDt; private String searchEndDt; private String worker; + private String tabState; } @Data @@ -70,14 +72,18 @@ public class DayAnswerDto { private String asSysGubunC; private String asPetiAncCodeV; private String asPetiNoC; + private String ccCause; + private String mmCarno; + private String mmDate; + private String mmCode; } @Data public static class History { - private String asMmcode; - private String asText; - private String asUser; - private String asState; - private String updateDt; + private String asMmcode; + private String asText; + private String asUser; + private String asState; + private String updateDt; } } diff --git a/src/main/java/go/kr/project/biz/minwon/dayanswer/service/DayAnswerService.java b/src/main/java/go/kr/project/biz/minwon/dayanswer/service/DayAnswerService.java index 99d4a53..b65d1d1 100644 --- a/src/main/java/go/kr/project/biz/minwon/dayanswer/service/DayAnswerService.java +++ b/src/main/java/go/kr/project/biz/minwon/dayanswer/service/DayAnswerService.java @@ -18,5 +18,11 @@ public interface DayAnswerService { void updateDayAnswer(DayAnswerDto.Request.Update dto); + int updateAllState(DayAnswerDto.Request.Search dto, String newState); + + int updateOneState(String asMmcode, String newState); + + void downloadExcel(DayAnswerDto.Request.Search dto, + javax.servlet.http.HttpServletResponse response) throws Exception; } diff --git a/src/main/java/go/kr/project/biz/minwon/dayanswer/service/impl/DayAnswerServiceImpl.java b/src/main/java/go/kr/project/biz/minwon/dayanswer/service/impl/DayAnswerServiceImpl.java index c8cf4db..d3d67ec 100644 --- a/src/main/java/go/kr/project/biz/minwon/dayanswer/service/impl/DayAnswerServiceImpl.java +++ b/src/main/java/go/kr/project/biz/minwon/dayanswer/service/impl/DayAnswerServiceImpl.java @@ -4,26 +4,79 @@ import go.kr.project.biz.minwon.dayanswer.mapper.DayAnswerMapper; import go.kr.project.biz.minwon.dayanswer.model.DayAnswerDto; import go.kr.project.biz.minwon.dayanswer.service.DayAnswerService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.List; @Service @RequiredArgsConstructor +@Slf4j + public class DayAnswerServiceImpl extends EgovAbstractServiceImpl implements DayAnswerService { private final DayAnswerMapper dayAnswerMapper; - @Override - public List selectAllDayAnswer(DayAnswerDto.Request.Search dto) { + @Override + public List selectAllDayAnswer(DayAnswerDto.Request.Search dto) { +//log.info("검색 DTO = page={}, perPage={}, startIndex={}, tabState={}, keyword={}", +// dto.getPage(), dto.getPerPage(), dto.getStartIndex(), +// dto.getTabState(), dto.getSearchKeyword()); +//log.info("totalCount = {}", dto.getTotalCount()); +// +// // 1. page / perPage 기본값 처리 +// Integer page = dto.getPage(); +// Integer perPage = dto.getPerPage(); +// +// if (page == null || page <= 0) { +// page = 1; +// } +// if (perPage == null || perPage <= 0) { +// perPage = 30; // PagingVO 기본값과 맞추기 +// } +// +// dto.setPage(page); +// dto.setPerPage(perPage); +// +// // 2. 전체 건수 조회 +// int totalCount = dayAnswerMapper.selectAllDayAnswerCount(dto); +// dto.setTotalCount(totalCount); +// +// // 3. startIndex / endIndex 계산 +// int startIndex = (page - 1) * perPage; +// dto.setStartIndex(startIndex); +// dto.setEndIndex(startIndex + perPage); +// +// // 4. 전체 페이지 수 계산 +// int totalPages = totalCount > 0 +// ? (int) Math.ceil((double) totalCount / perPage) +// : 0; +// dto.setTotalPages(totalPages); +// +//log.info("검색 DTO = page={}, perPage={}, startIndex={}, tabState={}, keyword={}", +// dto.getPage(), dto.getPerPage(), dto.getStartIndex(), +// dto.getTabState(), dto.getSearchKeyword()); +//log.info("totalCount = {}", dto.getTotalCount()); + + // 5. 실제 목록 조회 + List list = dayAnswerMapper.selectAllDayAnswer(dto); - List result = dayAnswerMapper.selectAllDayAnswer(dto); + log.info("selectAllDayAnswer 결과 건수 = {}", list.size()); + return list; - return result; } + @Override public DayAnswerDto.Response.cpMain selectOneByasMmcode (String asMmcode){ return dayAnswerMapper.selectOneByasMmcode(asMmcode); @@ -46,6 +99,76 @@ public class DayAnswerServiceImpl extends EgovAbstractServiceImpl implements Day dayAnswerMapper.updateDayAnswer(dto); dayAnswerMapper.insertAnswerHistory(dto); } + @Override + public int updateAllState(DayAnswerDto.Request.Search dto, String newState) { + return dayAnswerMapper.updateAllState(dto, newState); + } + + @Override + public int updateOneState(String asMmcode, String newState) { + return dayAnswerMapper.updateOneState(asMmcode, newState); + } + + @Override + public void downloadExcel(DayAnswerDto.Request.Search dto, + HttpServletResponse response) throws Exception { + + // 페이징 없이 전체 조회 (엑셀용 쿼리) + List list = + dayAnswerMapper.selectAllDayAnswerForExcel(dto); + + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet("일별답변결과"); + int rowNo = 0; + + // 헤더 + Row header = sheet.createRow(rowNo++); + header.createCell(0).setCellValue("메인코드"); + header.createCell(1).setCellValue("시군구코드"); + header.createCell(2).setCellValue("구분"); + header.createCell(3).setCellValue("접수일자"); + header.createCell(4).setCellValue("접수번호"); + header.createCell(5).setCellValue("처리자"); + header.createCell(6).setCellValue("전화번호"); + header.createCell(7).setCellValue("휴대폰"); + header.createCell(8).setCellValue("이메일"); + header.createCell(9).setCellValue("처리상태"); + header.createCell(10).setCellValue("답변내용"); + + // 데이터 + for (DayAnswerDto.Response.cpMain rowData : list) { + Row row = sheet.createRow(rowNo++); + row.createCell(0).setCellValue(nvl(rowData.getAsMmcode())); + row.createCell(1).setCellValue(nvl(rowData.getAsSggcode())); + row.createCell(2).setCellValue(nvl(rowData.getAsIngb())); + row.createCell(3).setCellValue(nvl(rowData.getAsJsdate())); + row.createCell(4).setCellValue(nvl(rowData.getAsJsno())); + row.createCell(5).setCellValue(nvl(rowData.getAsUser())); + row.createCell(6).setCellValue(nvl(rowData.getAsTel())); + row.createCell(7).setCellValue(nvl(rowData.getAsCell())); + row.createCell(8).setCellValue(nvl(rowData.getAsEmail())); + row.createCell(9).setCellValue(nvl(rowData.getAsState())); + row.createCell(10).setCellValue(nvl(rowData.getAsText())); + } + + for (int i = 0; i <= 10; i++) { + sheet.autoSizeColumn(i); + } + + String fileName = URLEncoder.encode("일별답변결과.xlsx", StandardCharsets.UTF_8.name()) + .replaceAll("\\+", "%20"); + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", + "attachment; filename=\"" + fileName + "\""); + + wb.write(response.getOutputStream()); + wb.close(); + } + + private String nvl(String s) { + return s == null ? "" : s; + } } diff --git a/src/main/java/go/kr/project/biz/search/controller/SearchController.java b/src/main/java/go/kr/project/biz/search/controller/SearchController.java new file mode 100644 index 0000000..7e8f64e --- /dev/null +++ b/src/main/java/go/kr/project/biz/search/controller/SearchController.java @@ -0,0 +1,50 @@ +package go.kr.project.biz.search.controller; + +import egovframework.constant.TilesConstants; +import egovframework.util.ApiResponseUtil; +import go.kr.project.biz.minwon.dayanswer.model.DayAnswerDto; +import go.kr.project.biz.search.model.SearchDto; +import go.kr.project.biz.search.service.SearchService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.ui.Model; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; + +@Controller + +@Slf4j + +@RequiredArgsConstructor + +public class SearchController { + + private final SearchService searchService; + + @GetMapping("/search/search.do") + + public String searchPageReturn () { + return "biz/search/search" + TilesConstants.BASE; + + } + @PostMapping("/search/search-select.ajax") + public ResponseEntity list(@ModelAttribute SearchDto.Request.Search dto) { + + dto.setTotalCount(0); + dto.setPagingYn("N"); + + List result = searchService.selectAllSearch(dto); + + + return ApiResponseUtil.successWithGrid(result, dto); + + } + +} diff --git a/src/main/java/go/kr/project/biz/search/mapper/SearchMapper.java b/src/main/java/go/kr/project/biz/search/mapper/SearchMapper.java new file mode 100644 index 0000000..4778fed --- /dev/null +++ b/src/main/java/go/kr/project/biz/search/mapper/SearchMapper.java @@ -0,0 +1,14 @@ +package go.kr.project.biz.search.mapper; + +import go.kr.project.biz.minwon.dayanswer.model.DayAnswerDto; +import go.kr.project.biz.search.model.SearchDto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SearchMapper { + + List selectAllSearch(SearchDto.Request.Search dto); + +} diff --git a/src/main/java/go/kr/project/biz/search/model/SearchDto.java b/src/main/java/go/kr/project/biz/search/model/SearchDto.java new file mode 100644 index 0000000..e8dcebe --- /dev/null +++ b/src/main/java/go/kr/project/biz/search/model/SearchDto.java @@ -0,0 +1,41 @@ +package go.kr.project.biz.search.model; + +import go.kr.project.system.common.model.PagingVO; +import lombok.Getter; +import lombok.Setter; + +public class SearchDto { + + public static class Request { + + @Getter + @Setter + public static class Search extends PagingVO { + + + private String searchCondition; + private String searchKeyword; + private String searchStartDt; + private String searchEndDt; + private String worker; + + } + } + public static class Response { + @Getter + @Setter + public static class cpMain { + + private String mmIngb; + private String mmDate; + private String mmCarno; + private String omJno; + private String omName; + private String mmKeum2; + private String mmImageGb; + private String mmImageCnt; + private String mmCarcheck; + private String mmCode; + } + } +} diff --git a/src/main/java/go/kr/project/biz/search/service/SearchService.java b/src/main/java/go/kr/project/biz/search/service/SearchService.java new file mode 100644 index 0000000..1fc25d7 --- /dev/null +++ b/src/main/java/go/kr/project/biz/search/service/SearchService.java @@ -0,0 +1,9 @@ +package go.kr.project.biz.search.service; + +import go.kr.project.biz.search.model.SearchDto; + +import java.util.List; + +public interface SearchService { + List selectAllSearch(SearchDto.Request.Search dto); +} diff --git a/src/main/java/go/kr/project/biz/search/service/impl/SearchServiceImpl.java b/src/main/java/go/kr/project/biz/search/service/impl/SearchServiceImpl.java new file mode 100644 index 0000000..6ec6457 --- /dev/null +++ b/src/main/java/go/kr/project/biz/search/service/impl/SearchServiceImpl.java @@ -0,0 +1,28 @@ +package go.kr.project.biz.search.service.impl; + +import go.kr.project.biz.search.mapper.SearchMapper; +import go.kr.project.biz.search.model.SearchDto; +import go.kr.project.biz.search.service.SearchService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SearchServiceImpl extends EgovAbstractServiceImpl implements SearchService { + + private final SearchMapper searchMapper; + + @Override + public List selectAllSearch(SearchDto.Request.Search dto){ + + List list = searchMapper.selectAllSearch(dto); + + return list; + + } +} diff --git a/src/main/resources/mybatis/mapper/biz/minwon/DayAnswerMapper_maria.xml b/src/main/resources/mybatis/mapper/biz/minwon/DayAnswerMapper_maria.xml index 65ed684..d27a0e0 100644 --- a/src/main/resources/mybatis/mapper/biz/minwon/DayAnswerMapper_maria.xml +++ b/src/main/resources/mybatis/mapper/biz/minwon/DayAnswerMapper_maria.xml @@ -10,62 +10,299 @@ resultType은 쿼리 결과를 반납하는 객체를 넣어준다. 아래 보면 이너클래스는 $형태로 들어간다. --> - + SELECT + AS_MMCODE, + AS_SGGCODE, + AS_INGB, + DATE_FORMAT(AS_JSDATE,'%Y-%m-%d') AS asJsdate, + AS_JSNO, + AS_JSNO_M, + AS_BBS_NO, + DATE_FORMAT(AS_LIMIT_DT,'%Y-%m-%d') AS asLimitDt, + AS_USER, + AS_TEL, + AS_CELL, + AS_EMAIL, + AS_STATE, + AS_POST_CD, + AS_POST_DT, + DATE_FORMAT(AS_STATE_DT, '%Y-%m-%d %H:%i:%s') AS asStateDt, + AS_TEXT, + AS_REUSER, + AS_INLINE, + AS_SYS_GUBUN_C, + AS_PETI_ANC_CODE_V, + AS_PETI_NO_C, + DATE_FORMAT( + STR_TO_DATE(CONCAT(M.MM_DATE, M.MM_TIME), '%Y%m%d%H%i%s'), + '%Y-%m-%d %H:%i:%s' ) AS mmDate, + MM_CARNO, + CC_CAUSE, + MM_CODE + FROM CP_ANSWER A + JOIN CP_MAIN M ON A.AS_MMCODE = M.MM_CODE + JOIN CP_OWNER O ON M.MM_OMCODE = O.OM_CODE + LEFT JOIN CP_CANCEL C ON M.MM_CODE = C.CC_MMCODE - - AND as_jsdate >= REPLACE(#{searchStartDt}, '-', '') - - - AND as_jsdate <= REPLACE(#{searchEndDt}, '-', '') - + + + AND + + + AS_STATE = '6' + + + AS_STATE = '7' + + + AS_STATE IN ('8') + + + AS_STATE IN ('9') + + + AS_STATE = '5' + + + AS_STATE IN ('A','B') + + + + + + + AND as_jsdate >= REPLACE(#{searchStartDt}, '-', '') + + + AND as_jsdate <= REPLACE(#{searchEndDt}, '-', '') + + + + + + + AND as_jsno LIKE CONCAT('%', #{searchKeyword}, '%') + + + + AND as_user LIKE CONCAT('%', #{searchKeyword}, '%') + + + + AND REPLACE(as_tel, '-', '') LIKE CONCAT('%', REPLACE(#{searchKeyword}, '-', ''), '%') + + + + + AND ( + as_jsno LIKE CONCAT('%', #{searchKeyword}, '%') + OR as_user LIKE CONCAT('%', #{searchKeyword}, '%') + OR as_tel LIKE CONCAT('%', #{searchKeyword}, '%') + ) + + + + + ORDER BY AS_JSDATE DESC, AS_JSNO DESC + + + + + + + + + + + + UPDATE cp_answer + SET AS_STATE = #{newState} + WHERE 1 = 1 + + AND + + + AS_JSNO LIKE CONCAT('%', #{vo.searchKeyword}, '%') + + + AS_REUSER LIKE CONCAT('%', #{vo.searchKeyword}, '%') + + + + + AND AS_JSDATE >= #{vo.searchStartDt} + + + AND AS_JSDATE <= #{vo.searchEndDt} + + + + + UPDATE cp_answer + SET AS_STATE = #{newState} + WHERE AS_MMCODE = #{asMmcode} + diff --git a/src/main/resources/mybatis/mapper/biz/search/SearchMapper_maria.xml b/src/main/resources/mybatis/mapper/biz/search/SearchMapper_maria.xml new file mode 100644 index 0000000..b663765 --- /dev/null +++ b/src/main/resources/mybatis/mapper/biz/search/SearchMapper_maria.xml @@ -0,0 +1,69 @@ + + + + + + diff --git a/src/main/webapp/WEB-INF/views/biz/minwon/dayanswer/dayanswer.jsp b/src/main/webapp/WEB-INF/views/biz/minwon/dayanswer/dayanswer.jsp index fd0b95e..5598b2c 100644 --- a/src/main/webapp/WEB-INF/views/biz/minwon/dayanswer/dayanswer.jsp +++ b/src/main/webapp/WEB-INF/views/biz/minwon/dayanswer/dayanswer.jsp @@ -11,7 +11,6 @@ -
    @@ -22,6 +21,7 @@ +
  • 검색어
  • @@ -33,7 +33,6 @@
  • -
  • @@ -42,13 +41,78 @@
  • / Pages
+
+
    +
  • 전체
  • +
  • 답변완료(부과)
  • +
  • 답변완료(계도)
  • +
  • 답변완료(미부과)
  • +
  • 답변완료(수기)
  • +
  • 답변실패
  • +
  • 답변미대상
  • +
+
+ +
@@ -60,429 +124,324 @@
+
+ +
+
+ + + + + + +
+
+ + 초기 0, 대기 1, 대상(부과) 2, 대상(계도) 3, 대상(서손) 4, 실패 5, + 완료(부과) 6, 완료(계도) 7, 완료(서손) 8, 완료(수기) 9, 미대상 A, 미대상(서손) B + +
+
diff --git a/src/main/webapp/WEB-INF/views/biz/search/search.jsp b/src/main/webapp/WEB-INF/views/biz/search/search.jsp new file mode 100644 index 0000000..f73d3b3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/biz/search/search.jsp @@ -0,0 +1,264 @@ +<%-- + Created by IntelliJ IDEA. + User: moong + Date: 2025-11-20 + Time: 오전 10:07 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + +
+
+
+
+
+ +
+
+
+
+
+
    +
  • 검색구분
  • +
  • + +
  • +
  • 검색어
  • +
  • +
  • 접수일자 지정
  • +
  • + ~ + +
  • +
  • + +
  • +
+
    +
  • + + / Pages +
  • +
+
+
+
+
+
+
+
+
+
+
+
+
+ +