단속 > 단속 등록&열람: 위치정보 및 소유자정보 컨트롤러/서비스 주석 추가, 주요 API 설명 보강, 디버깅 로그 추가, 중요 로직 주석 수정

dev
박성영 4 months ago
parent 7393cd3ace
commit ddccf245cf

@ -11,7 +11,15 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnExmnr.service.impl
* fileName : CrdnExmnrServiceImpl
* author :
* date : 2025-08-28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Slf4j
@Service

@ -20,8 +20,17 @@ import java.util.List;
import java.util.Map;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.controller
* fileName : CrdnOwnrInfoController
* author :
* date : 2025-08-28
* description :
* : API . (setTotalCountsetPagingYn) .
* , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Controller
@RequestMapping("/crdn/crndRegistAndView/crdnOwnrInfo")
@ -33,15 +42,23 @@ public class CrdnOwnrInfoController {
private final CrdnOwnrInfoService service;
/**
* (AJAX)
* AJAX
* (ApiResponse) .
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자정보 목록 조회", description = "단속연도/번호로 소유자정보를 조회합니다.")
@Operation(summary = "소유자정보 목록 조회 (AJAX)", description = "소유자정보 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "400", description = "조회 실패")
@ApiResponse(responseCode = "200", description = "소유자정보 목록 조회 성공"),
@ApiResponse(responseCode = "400", description = "소유자정보 목록 조회 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/list.ajax")
public ResponseEntity<?> listAjax(@ModelAttribute CrdnOwnrInfoVO vo) {
log.debug("소유자정보 목록 AJAX 조회 - 검색조건: {}", vo);
// 1. 총 개수 조회
int totalCount = service.selectOwnrInfoListTotalCount(vo);
// 2. 응답 데이터 구성
@ -54,13 +71,21 @@ public class CrdnOwnrInfoController {
}
/**
* : TB_OWNR_INFO (AJAX)
* , .
* TB_OWNR_INFO AJAX
* , .
*
* @param crdnYr
* @param crdnNo
* @param pstnInfoId ID
* @param ownrId ID
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 정보 저장", description = "소유자 선택 후 TB_OWNR_INFO 테이블에 저장합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "저장 성공"),
@ApiResponse(responseCode = "400", description = "저장 실패")
@ApiResponse(responseCode = "200", description = "소유자 정보 저장 성공"),
@ApiResponse(responseCode = "400", description = "소유자 정보 저장 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/saveSelectedOwnr.ajax")
public ResponseEntity<?> saveSelectedOwnrAjax(
@ -68,8 +93,10 @@ public class CrdnOwnrInfoController {
@RequestParam String crdnNo,
@RequestParam String pstnInfoId,
@RequestParam String ownrId) {
log.debug("소유자 정보 저장 요청 - 단속년도: {}, 단속번호: {}, 위치정보ID: {}, 소유자ID: {}", crdnYr, crdnNo, pstnInfoId, ownrId);
String rgtr = SessionUtil.getUserId(); // 기본값
String rgtr = SessionUtil.getUserId(); // 기본값
// 중요로직: 중복 검증 먼저 수행
if (service.checkDuplicateOwnr(crdnYr, crdnNo, ownrId)) {
@ -99,13 +126,19 @@ public class CrdnOwnrInfoController {
}
/**
* : (AJAX)
* .
* AJAX
* .
*
* @param ownrInfoIds ID
* @param session HTTP
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 정보 삭제", description = "선택된 소유자 정보를 삭제합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "400", description = "삭제 실패")
@ApiResponse(responseCode = "200", description = "소유자 정보 삭제 성공"),
@ApiResponse(responseCode = "400", description = "소유자 정보 삭제 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/delete.ajax")
public ResponseEntity<?> deleteOwnrInfosAjax(@RequestParam List<String> ownrInfoIds, HttpSession session) {

@ -13,8 +13,16 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.service.impl
* fileName : CrdnOwnrInfoServiceImpl
* author :
* date : 2025-08-28
* description :
* : - , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Service
@RequiredArgsConstructor

@ -24,8 +24,17 @@ import org.springframework.web.servlet.ModelAndView;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.controller
* fileName : CrdnPstnInfoController
* author :
* date : 2025-08-28
* description :
* : Grid1( ) / API . (setTotalCountsetPagingYn) .
* / ID , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Controller
@RequestMapping("/crdn/crndRegistAndView/crdnPstnInfo")
@ -38,15 +47,23 @@ public class CrdnPstnInfoController {
private final CommonCodeService commonCodeService;
/**
* (AJAX)
* AJAX
* (ApiResponse) .
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "위치정보 목록 조회", description = "단속연도/번호로 위치정보를 조회합니다.")
@Operation(summary = "위치정보 목록 조회 (AJAX)", description = "위치정보 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "400", description = "조회 실패")
@ApiResponse(responseCode = "200", description = "위치정보 목록 조회 성공"),
@ApiResponse(responseCode = "400", description = "위치정보 목록 조회 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/list.ajax")
public ResponseEntity<?> listAjax(@ModelAttribute CrdnPstnInfoVO vo) {
log.debug("위치정보 목록 AJAX 조회 - 검색조건: {}", vo);
// 1. 총 개수 조회
int totalCount = service.selectPstnInfoListTotalCount(vo);
// 2. 응답 데이터 구성
@ -59,9 +76,17 @@ public class CrdnPstnInfoController {
}
/**
*
* : / , (, ) .
* pstnInfoId .
* / .
* / , (, ) .
* pstnInfoId .
*
* @param crdnYr
* @param crdnNo
* @param mode (C/U/V)
* @param pstnInfoId ID ( )
* @param model
* @return ModelAndView
* @throws Exception
*/
@GetMapping("/popup.do")
@Operation(summary = "위치정보 등록/수정 팝업", description = "위치정보 등록 또는 수정을 위한 팝업 화면을 제공합니다.")
@ -72,6 +97,8 @@ public class CrdnPstnInfoController {
@Parameter(description = "위치정보 ID (수정시 필수)") @RequestParam(required = false) String pstnInfoId,
Model model) {
log.debug("위치정보 팝업 조회 - 단속년도: {}, 단속번호: {}, 모드: {}, 위치정보ID: {}", crdnYr, crdnNo, mode, pstnInfoId);
// 법정동 코드 목록
CmmnCodeSearchVO emdSearch = CmmnCodeSearchVO.builder()
.searchCdGroupId("STDG_EMD_CD")
@ -103,16 +130,23 @@ public class CrdnPstnInfoController {
}
/**
* (AJAX)
* : ID . DEL_YN 'N' .
* AJAX
* ID , DEL_YN 'N' .
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "위치정보 등록", description = "단속 자료의 위치정보를 등록합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "등록 성공"),
@ApiResponse(responseCode = "400", description = "등록 실패")
@ApiResponse(responseCode = "200", description = "위치정보 등록 성공"),
@ApiResponse(responseCode = "400", description = "위치정보 등록 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/insert.ajax")
public ResponseEntity<?> insertAjax(@ModelAttribute CrdnPstnInfoVO vo) {
log.debug("위치정보 등록 요청 - 단속년도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
vo.setRgtr(SessionUtil.getUserId());
// 세션의 조직코드를 시군구 코드로 설정
vo.setSggCd(SessionUtil.getSessionVO().getUser().getOrgCd());
@ -125,16 +159,23 @@ public class CrdnPstnInfoController {
}
/**
* (AJAX)
* : ID . SQL NOW() .
* AJAX
* ID , SQL NOW() .
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "위치정보 수정", description = "단속 자료의 위치정보를 수정합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "수정 성공"),
@ApiResponse(responseCode = "400", description = "수정 실패")
@ApiResponse(responseCode = "200", description = "위치정보 수정 성공"),
@ApiResponse(responseCode = "400", description = "위치정보 수정 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/update.ajax")
public ResponseEntity<?> updateAjax(@ModelAttribute CrdnPstnInfoVO vo) {
log.debug("위치정보 수정 요청 - 위치정보ID: {}", vo.getPstnInfoId());
vo.setMdfr(SessionUtil.getUserId());
int result = service.updatePstnInfo(vo);
@ -145,16 +186,23 @@ public class CrdnPstnInfoController {
}
/**
* (AJAX)
* : (DEL_YN='Y') . ID SQL .
* AJAX
* (DEL_YN='Y') . ID SQL .
*
* @param pstnInfoIds ID
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "위치정보 삭제", description = "선택된 위치정보들을 삭제합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "400", description = "삭제 실패")
@ApiResponse(responseCode = "200", description = "위치정보 삭제 성공"),
@ApiResponse(responseCode = "400", description = "위치정보 삭제 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/delete.ajax")
public ResponseEntity<?> deleteAjax(@RequestParam("pstnInfoIds") List<String> pstnInfoIds) {
log.debug("위치정보 삭제 요청 - 위치정보ID 목록: {}", pstnInfoIds);
try {
String dltr = SessionUtil.getUserId();
int result = service.deletePstnInfos(pstnInfoIds, dltr);

@ -12,8 +12,16 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.service.impl
* fileName : CrdnPstnInfoServiceImpl
* author :
* date : 2025-08-28
* description :
* : - , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Service
@RequiredArgsConstructor

@ -20,8 +20,16 @@ import org.springframework.web.servlet.ModelAndView;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.ownrSelect.controller
* fileName : OwnrSelectController
* author :
* date : 2025-08-28
* description :
* : TB_OWNR API . (setTotalCountsetPagingYn) .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Controller
@RequestMapping("/crdn/crndRegistAndView/ownrSelect")
@ -33,8 +41,14 @@ public class OwnrSelectController {
private final OwnrSelectService service;
/**
*
* : .
* .
* .
*
* @param crdnYr
* @param crdnNo
* @param model
* @return ModelAndView
* @throws Exception
*/
@GetMapping("/popup.do")
@Operation(summary = "소유자 선택 팝업", description = "소유자 선택을 위한 팝업 화면을 제공합니다.")
@ -43,6 +57,8 @@ public class OwnrSelectController {
@Parameter(description = "단속 번호") @RequestParam String crdnNo,
Model model) {
log.debug("소유자 선택 팝업 조회 - 단속년도: {}, 단속번호: {}", crdnYr, crdnNo);
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/ownrSelect/ownrSelectPopup" + TilesConstants.POPUP);
mav.addObject("crdnYr", crdnYr);
mav.addObject("crdnNo", crdnNo);
@ -50,15 +66,23 @@ public class OwnrSelectController {
}
/**
* (AJAX)
* AJAX
* (ApiResponse) .
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 목록 조회", description = "TB_OWNR 테이블에서 소유자 목록을 조회합니다.")
@Operation(summary = "소유자 목록 조회 (AJAX)", description = "TB_OWNR 테이블에서 소유자 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "400", description = "조회 실패")
@ApiResponse(responseCode = "200", description = "소유자 목록 조회 성공"),
@ApiResponse(responseCode = "400", description = "소유자 목록 조회 실패"),
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/list.ajax")
public ResponseEntity<?> listAjax(@ModelAttribute OwnrSelectVO vo) {
log.debug("소유자 목록 AJAX 조회 - 검색조건: {}", vo);
// 1. 총 개수 조회
int totalCount = service.selectOwnrListTotalCount(vo);
// 2. 응답 데이터 구성

@ -11,8 +11,16 @@ import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.ownrSelect.service.impl
* fileName : OwnrSelectServiceImpl
* author :
* date : 2025-08-28
* description :
* : - , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Service
@RequiredArgsConstructor

Loading…
Cancel
Save