단속 > 단속 등록&열람: 조사원 검색 VO 통합 처리, CrdnExmnrSearchVO 삭제, 관련 서비스 및 매퍼 수정, UI 검색 조건 반영, totalCount 표시 개선

dev
박성영 4 months ago
parent ddccf245cf
commit 30cf995bd9

@ -3,7 +3,6 @@ package go.kr.project.crdn.crndRegistAndView.crdnExmnr.controller;
import egovframework.constant.TilesConstants;
import egovframework.util.ApiResponseUtil;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrSearchVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.service.CrdnExmnrService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -49,7 +48,7 @@ public class CrdnExmnrController {
@Operation(summary = "조사원 목록 조회", description = "검색 조건에 따른 조사원 목록을 조회합니다.")
@PostMapping("/list.ajax")
public ResponseEntity<?> selectExmnrPopList(
@Parameter(description = "검색 조건") @ModelAttribute CrdnExmnrSearchVO searchVO) {
@Parameter(description = "검색 조건") @ModelAttribute CrdnExmnrVO searchVO) {
log.debug("조사원 팝업 목록 조회 요청 - 검색 조건: {}", searchVO);

@ -1,7 +1,6 @@
package go.kr.project.crdn.crndRegistAndView.crdnExmnr.mapper;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrSearchVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -17,13 +16,13 @@ public interface CrdnExmnrMapper {
* @param searchVO
* @return
*/
List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrSearchVO searchVO);
List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrVO searchVO);
/**
*
* @param searchVO
* @return
*/
int selectExmnrPopListTotalCount(CrdnExmnrSearchVO searchVO);
int selectExmnrPopListTotalCount(CrdnExmnrVO searchVO);
}

@ -1,16 +0,0 @@
package go.kr.project.crdn.crndRegistAndView.crdnExmnr.model;
import go.kr.project.common.model.PagingVO;
import lombok.*;
@EqualsAndHashCode(callSuper=true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class CrdnExmnrSearchVO extends PagingVO {
private String schExmnr;
private String schSggCd;
private String delYn;
}

@ -1,17 +1,19 @@
package go.kr.project.crdn.crndRegistAndView.crdnExmnr.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import go.kr.project.common.model.PagingVO;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper=true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class CrdnExmnrVO {
public class CrdnExmnrVO extends PagingVO {
private String exmnrId;
private String sggCd;
@ -27,4 +29,8 @@ public class CrdnExmnrVO {
private String dltr;
private String exmnr;
// 검색 조건 필드들 (CrdnExmnrSearchVO에서 통합)
private String schExmnr; // 검색용 검사자
private String schSggCd; // 검색용 시군구 코드
}

@ -1,7 +1,6 @@
package go.kr.project.crdn.crndRegistAndView.crdnExmnr.service;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrSearchVO;
import java.util.List;
@ -15,14 +14,14 @@ public interface CrdnExmnrService {
* @param searchVO
* @return
*/
List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrSearchVO searchVO);
List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrVO searchVO);
/**
*
* @param searchVO
* @return
*/
int selectExmnrPopListTotalCount(CrdnExmnrSearchVO searchVO);
int selectExmnrPopListTotalCount(CrdnExmnrVO searchVO);
}

@ -2,7 +2,6 @@ package go.kr.project.crdn.crndRegistAndView.crdnExmnr.service.impl;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.mapper.CrdnExmnrMapper;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.model.CrdnExmnrSearchVO;
import go.kr.project.crdn.crndRegistAndView.crdnExmnr.service.CrdnExmnrService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -34,7 +33,7 @@ public class CrdnExmnrServiceImpl implements CrdnExmnrService {
* @return
*/
@Override
public List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrSearchVO searchVO) {
public List<CrdnExmnrVO> selectExmnrPopList(CrdnExmnrVO searchVO) {
log.debug("조사원 팝업 목록 조회 - 검색 조건: {}", searchVO);
return exmnrPopMapper.selectExmnrPopList(searchVO);
}
@ -45,7 +44,7 @@ public class CrdnExmnrServiceImpl implements CrdnExmnrService {
* @return
*/
@Override
public int selectExmnrPopListTotalCount(CrdnExmnrSearchVO searchVO) {
public int selectExmnrPopListTotalCount(CrdnExmnrVO searchVO) {
log.debug("조사원 팝업 목록 총 건수 조회 - 검색 조건: {}", searchVO);
return exmnrPopMapper.selectExmnrPopListTotalCount(searchVO);
}

@ -141,26 +141,23 @@ public class CrdnOwnrInfoController {
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/delete.ajax")
public ResponseEntity<?> deleteOwnrInfosAjax(@RequestParam List<String> ownrInfoIds, HttpSession session) {
try {
String dltr = SessionUtil.getUserId(); // 삭제자 ID
// 중요로직: 선택된 소유자 정보들을 논리 삭제
int deletedCount = service.deleteOwnrInfos(ownrInfoIds, dltr);
if (deletedCount > 0) {
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("message", deletedCount + "건의 소유자 정보가 삭제되었습니다.");
result.put("deletedCount", deletedCount);
return ApiResponseUtil.success(result);
} else {
return ApiResponseUtil.error("삭제할 소유자 정보가 없거나 삭제에 실패했습니다.");
}
} catch (Exception e) {
log.error("소유자 정보 삭제 중 오류 발생", e);
return ApiResponseUtil.error("소유자 정보 삭제 중 오류가 발생했습니다.");
public ResponseEntity<?> deleteOwnrInfosAjax(@RequestParam List<String> ownrInfoIds) {
String dltr = SessionUtil.getUserId(); // 삭제자 ID
// 중요로직: 선택된 소유자 정보들을 논리 삭제
int deletedCount = service.deleteOwnrInfos(ownrInfoIds, dltr);
if (deletedCount > 0) {
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("message", deletedCount + "건의 소유자 정보가 삭제되었습니다.");
result.put("deletedCount", deletedCount);
return ApiResponseUtil.success(result);
} else {
return ApiResponseUtil.error("삭제할 소유자 정보가 없거나 삭제에 실패했습니다.");
}
}
}

@ -8,8 +8,11 @@ import java.util.List;
*
*/
public interface CrdnOwnrInfoService {
List<CrdnOwnrInfoVO> selectOwnrInfoList(CrdnOwnrInfoVO vo);
int selectOwnrInfoListTotalCount(CrdnOwnrInfoVO vo);
int insertOwnrInfo(CrdnOwnrInfoVO vo);
// 중요로직: 상세 조회 - 그리드 더블클릭 시 사용

@ -4,7 +4,7 @@
<mapper namespace="go.kr.project.crdn.crndRegistAndView.crdnExmnr.mapper.CrdnExmnrMapper">
<!-- 조사원 팝업 목록 조회 -->
<select id="selectExmnrPopList" parameterType="CrdnExmnrSearchVO"
<select id="selectExmnrPopList" parameterType="CrdnExmnrVO"
resultType="CrdnExmnrVO">
SELECT
e.EXMNR_ID as exmnrId,
@ -35,7 +35,7 @@
</select>
<!-- 조사원 팝업 목록 총 건수 조회 -->
<select id="selectExmnrPopListTotalCount" parameterType="CrdnExmnrSearchVO"
<select id="selectExmnrPopListTotalCount" parameterType="CrdnExmnrVO"
resultType="int">
SELECT COUNT(*)
FROM tb_exmnr e

@ -27,7 +27,7 @@
<div class="box_column">
<ul class="box_title" style="display: flex; justify-content: space-between; align-items: center;">
<li class="tit"></li>
<li class="tit">조사원 목록</li>
<li class="rig">
<span id="totalCount" class="total-count" style="padding-left: 25px;padding-right: 25px;">총 0건</span>
</li>

@ -51,6 +51,7 @@
<div class="box_column" style="margin-top: 20px;">
<ul class="box_title">
<li class="tit">소유자 목록</li>
<span id="totalCount" class="total-count" style="padding-left: 25px;padding-right: 25px;">총 0건</span>
</ul>
<div class="containers">
<div id="ownrSelectGrid"></div>
@ -179,7 +180,16 @@
*/
gridBindEvents: function() {
var self = this;
// 데이터 로딩 완료 이벤트 - 체크박스 상태 복원
this.instance.on('successResponse', function(ev) {
var responseObj = JSON.parse(ev.xhr.response);
if( responseObj ){
var totalCount = responseObj.data.contents.length;
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
}
});
// 행 더블클릭 시 선택
this.instance.on('dblclick', function(ev) {
var rowData = self.instance.getRow(ev.rowKey);

Loading…
Cancel
Save