단속 > 단속 등록&열람: 컨트롤러 및 서비스 주요 API URL 명명 규칙 수정, 팝업 관련 JSP 경로 변경, 논리 삭제 로직 리팩토링 및 트랜잭션 적용, 주석 보강 및 디버깅 로깅 추가

dev
박성영 4 months ago
parent 09f41802cf
commit aac66dcf03

@ -75,14 +75,14 @@ public class BldgNewPrcCrtrAmtController {
* @param model
* @return
*/
@GetMapping("/popup.do")
@GetMapping("/bldgNewPrcCrtrAmtPopup.do")
@Operation(summary = "등록/수정 팝업", description = "window.open으로 호출되는 팝업")
public String popup(@ModelAttribute BldgNewPrcCrtrAmtVO vo, Model model){
log.debug("건물신축가격기준액 팝업 조회 - 연도: {}, 번호: {}", vo.getYr(), vo.getNo());
if (vo.getYr() != null && vo.getNo() != null){
model.addAttribute("data", service.selectOne(vo));
}
return "baseData/bldgNewPrcCrtrAmt/popup"+ TilesConstants.POPUP;
return "baseData/bldgNewPrcCrtrAmt/bldgNewPrcCrtrAmtPopup"+ TilesConstants.POPUP;
}
/**

@ -85,7 +85,7 @@ public class CrdnActInfoController {
* @return ModelAndView
*/
@Operation(summary = "불법위반행위정보 팝업", description = "불법위반행위정보 등록/수정 팝업 화면을 제공합니다.")
@GetMapping("/popup.do")
@GetMapping("/crdnActInfoRegistPopup.do")
public ModelAndView popup(
@Parameter(description = "단속연도") @RequestParam(required = false) String crdnYr,
@Parameter(description = "단속번호") @RequestParam(required = false) String crdnNo,
@ -95,31 +95,26 @@ public class CrdnActInfoController {
log.debug("불법위반행위정보 팝업 요청 - crdnYr: {}, crdnNo: {}, mode: {}, actInfoId: {}", crdnYr, crdnNo, mode, actInfoId);
try {
CrdnActInfoVO data = null;
// 수정 모드인 경우 기존 데이터 조회
if ("update".equals(mode) && actInfoId != null) {
data = service.selectActInfoByPk(actInfoId);
}
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/crdnActInfo/crdnActInfoRegistPopup" + TilesConstants.POPUP);
mav.addObject("data", data);
mav.addObject("mode", mode);
mav.addObject("crdnYr", crdnYr);
mav.addObject("crdnNo", crdnNo);
// 필요한 공통코드 조회
model.addAttribute("actTypeCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("ACT_TYPE_CD").build()));
model.addAttribute("vltnLwrgCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("VLTN_LWRG_CD").build()));
model.addAttribute("strctIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("STRCT_IDX_CD").build()));
model.addAttribute("usgIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("USG_IDX_CD").build()));
return mav;
} catch (Exception e) {
log.error("불법위반행위정보 팝업 처리 중 오류 발생", e);
throw e;
CrdnActInfoVO data = null;
// 수정 모드인 경우 기존 데이터 조회
if ("update".equals(mode) && actInfoId != null) {
data = service.selectActInfoByPk(actInfoId);
}
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/crdnActInfo/crdnActInfoRegistPopup" + TilesConstants.POPUP);
mav.addObject("data", data);
mav.addObject("mode", mode);
mav.addObject("crdnYr", crdnYr);
mav.addObject("crdnNo", crdnNo);
// 필요한 공통코드 조회
model.addAttribute("actTypeCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("ACT_TYPE_CD").build()));
model.addAttribute("vltnLwrgCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("VLTN_LWRG_CD").build()));
model.addAttribute("strctIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("STRCT_IDX_CD").build()));
model.addAttribute("usgIdxCdList", commonCodeService.selectCodeDetailList(CmmnCodeSearchVO.builder().searchCdGroupId("USG_IDX_CD").build()));
return mav;
}
/**
@ -137,10 +132,6 @@ public class CrdnActInfoController {
public ResponseEntity<?> insertAjax(@ModelAttribute CrdnActInfoVO vo) {
log.debug("불법위반행위정보 등록 요청: {}", vo);
// 현재 로그인한 사용자 정보 설정
String userId = SessionUtil.getUserId();
vo.setRgtr(userId);
int result = service.insertActInfo(vo);
if (result > 0) {
@ -165,10 +156,6 @@ public class CrdnActInfoController {
public ResponseEntity<?> updateAjax(@ModelAttribute CrdnActInfoVO vo) {
log.debug("불법위반행위정보 수정 요청: {}", vo);
// 현재 로그인한 사용자 정보 설정
String userId = SessionUtil.getUserId();
vo.setMdfr(userId);
int result = service.updateActInfo(vo);
if (result > 0) {
@ -197,21 +184,7 @@ public class CrdnActInfoController {
return ApiResponseUtil.error("삭제할 항목을 선택해 주세요.");
}
// 현재 로그인한 사용자 정보
String userId = SessionUtil.getUserId();
// 중요한 로직 주석: 각 행위정보 ID에 대해 논리 삭제 수행
int deletedCount = 0;
for (String actInfoId : actInfoIds) {
if (actInfoId != null && !actInfoId.trim().isEmpty()) {
CrdnActInfoVO deleteVO = CrdnActInfoVO.builder()
.actInfoId(actInfoId)
.dltr(userId)
.build();
int result = service.deleteActInfo(deleteVO);
deletedCount += result;
}
}
int deletedCount = service.deleteActInfos(actInfoIds);
if (deletedCount > 0) {
return ApiResponseUtil.success(MessageConstants.Common.SAVE_SUCCESS);

@ -51,4 +51,11 @@ public interface CrdnActInfoService {
* @return
*/
int deleteActInfo(CrdnActInfoVO vo);
/**
* ()
* @param actInfoIds ID
* @return
*/
int deleteActInfos(List<String> actInfoIds);
}

@ -1,6 +1,7 @@
package go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.impl;
import egovframework.exception.MessageException;
import egovframework.util.SessionUtil;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.mapper.CrdnActInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.CrdnActInfoService;
@ -8,6 +9,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -89,4 +91,65 @@ public class CrdnActInfoServiceImpl extends EgovAbstractServiceImpl implements C
log.debug("불법위반행위정보 삭제: {}", vo);
return mapper.deleteActInfo(vo);
}
/**
* ()
* : .
* ID , .
* @param actInfoIds ID
* @return
*/
@Override
@Transactional
public int deleteActInfos(List<String> actInfoIds) {
log.debug("불법위반행위정보 일괄 삭제: {}", actInfoIds);
// 중요한 로직 주석: 삭제할 ID 목록이 비어있는 경우 처리 중단
if (actInfoIds == null || actInfoIds.isEmpty()) {
log.warn("삭제할 행위정보ID 목록이 비어있습니다.");
return 0;
}
// 중요한 로직 주석: 세션에서 현재 사용자 정보를 가져와 삭제자로 설정
String userId = SessionUtil.getUserId();
if (userId == null || userId.trim().isEmpty()) {
log.error("삭제자 정보를 가져올 수 없습니다.");
throw new MessageException("사용자 정보를 확인할 수 없습니다.");
}
// 중요한 로직 주석: 각 행위정보 ID에 대해 유효성 검증 후 논리 삭제 수행
int deletedCount = 0;
for (String actInfoId : actInfoIds) {
if (actInfoId != null && !actInfoId.trim().isEmpty()) {
try {
// 중요한 로직 주석: 삭제할 데이터 존재 여부 확인
CrdnActInfoVO existingData = mapper.selectActInfoByPk(actInfoId);
if (existingData == null) {
log.warn("삭제할 행위정보를 찾을 수 없습니다. actInfoId: {}", actInfoId);
continue;
}
// 중요한 로직 주석: 삭제 VO 생성 및 삭제자 정보 설정
CrdnActInfoVO deleteVO = CrdnActInfoVO.builder()
.actInfoId(actInfoId)
.dltr(userId)
.build();
int result = mapper.deleteActInfo(deleteVO);
if (result > 0) {
deletedCount++;
log.debug("행위정보 삭제 완료. actInfoId: {}", actInfoId);
} else {
log.warn("행위정보 삭제 실패. actInfoId: {}", actInfoId);
}
} catch (Exception e) {
log.error("행위정보 삭제 중 오류 발생. actInfoId: {}, error: {}", actInfoId, e.getMessage());
throw new MessageException("행위정보 삭제 중 오류가 발생했습니다. ID: " + actInfoId);
}
}
}
log.info("불법위반행위정보 일괄 삭제 완료. 요청: {}건, 삭제: {}건", actInfoIds.size(), deletedCount);
return deletedCount;
}
}

@ -113,21 +113,7 @@ public class CrdnActrInfoController {
return ApiResponseUtil.error("삭제할 항목을 선택해 주세요.");
}
// 현재 로그인한 사용자 정보
String userId = SessionUtil.getUserId();
// 중요한 로직 주석: 각 행위자정보 ID에 대해 논리 삭제 수행
int deletedCount = 0;
for (String actrInfoId : actrInfoIds) {
if (actrInfoId != null && !actrInfoId.trim().isEmpty()) {
CrdnActrInfoVO deleteVO = CrdnActrInfoVO.builder()
.actrInfoId(actrInfoId)
.dltr(userId)
.build();
int result = service.deleteActrInfo(deleteVO);
deletedCount += result;
}
}
int deletedCount = service.deleteActrInfos(actrInfoIds);
if (deletedCount > 0) {
return ApiResponseUtil.success("삭제가 완료되었습니다.");

@ -44,4 +44,11 @@ public interface CrdnActrInfoService {
* @return
*/
int deleteActrInfo(CrdnActrInfoVO vo);
/**
* ()
* @param actrInfoIds ID
* @return
*/
int deleteActrInfos(List<String> actrInfoIds);
}

@ -1,6 +1,7 @@
package go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.impl;
import egovframework.exception.MessageException;
import egovframework.util.SessionUtil;
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.mapper.CrdnActrInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.model.CrdnActrInfoVO;
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.service.CrdnActrInfoService;
@ -8,6 +9,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -82,4 +84,65 @@ public class CrdnActrInfoServiceImpl extends EgovAbstractServiceImpl implements
log.debug("위반행위자정보 삭제: {}", vo);
return mapper.deleteActrInfo(vo);
}
/**
* ()
* : .
* ID , .
* @param actrInfoIds ID
* @return
*/
@Override
@Transactional
public int deleteActrInfos(List<String> actrInfoIds) {
log.debug("위반행위자정보 일괄 삭제: {}", actrInfoIds);
// 중요한 로직 주석: 삭제할 ID 목록이 비어있는 경우 처리 중단
if (actrInfoIds == null || actrInfoIds.isEmpty()) {
log.warn("삭제할 행위자정보ID 목록이 비어있습니다.");
return 0;
}
// 중요한 로직 주석: 세션에서 현재 사용자 정보를 가져와 삭제자로 설정
String userId = SessionUtil.getUserId();
if (userId == null || userId.trim().isEmpty()) {
log.error("삭제자 정보를 가져올 수 없습니다.");
throw new MessageException("사용자 정보를 확인할 수 없습니다.");
}
// 중요한 로직 주석: 각 행위자정보 ID에 대해 유효성 검증 후 논리 삭제 수행
int deletedCount = 0;
for (String actrInfoId : actrInfoIds) {
if (actrInfoId != null && !actrInfoId.trim().isEmpty()) {
try {
// 중요한 로직 주석: 삭제할 데이터 존재 여부 확인
CrdnActrInfoVO existingData = mapper.selectActrInfoByPk(actrInfoId);
if (existingData == null) {
log.warn("삭제할 행위자정보를 찾을 수 없습니다. actrInfoId: {}", actrInfoId);
continue;
}
// 중요한 로직 주석: 삭제 VO 생성 및 삭제자 정보 설정
CrdnActrInfoVO deleteVO = CrdnActrInfoVO.builder()
.actrInfoId(actrInfoId)
.dltr(userId)
.build();
int result = mapper.deleteActrInfo(deleteVO);
if (result > 0) {
deletedCount++;
log.debug("행위자정보 삭제 완료. actrInfoId: {}", actrInfoId);
} else {
log.warn("행위자정보 삭제 실패. actrInfoId: {}", actrInfoId);
}
} catch (Exception e) {
log.error("행위자정보 삭제 중 오류 발생. actrInfoId: {}, error: {}", actrInfoId, e.getMessage());
throw new MessageException("행위자정보 삭제 중 오류가 발생했습니다. ID: " + actrInfoId);
}
}
}
log.info("위반행위자정보 일괄 삭제 완료. 요청: {}건, 삭제: {}건", actrInfoIds.size(), deletedCount);
return deletedCount;
}
}

@ -17,7 +17,16 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* packageName : go.kr.project.crdn.crndRegistAndView.crdnExmnr.controller
* fileName : CrdnExmnrController
* author :
* date : 2025-08-28
* description :
* : .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2025-08-28
*/
@Tag(name = "조사원 팝업", description = "조사원 팝업 API")
@Slf4j

@ -15,6 +15,7 @@ import java.util.List;
* author :
* date : 2025-08-28
* description :
* : , - .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------

@ -47,7 +47,6 @@ public class CrdnOwnrInfoController {
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자정보 목록 조회 (AJAX)", description = "소유자정보 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {
@ -79,7 +78,6 @@ public class CrdnOwnrInfoController {
* @param pstnInfoId ID
* @param ownrId ID
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 정보 저장", description = "소유자 선택 후 TB_OWNR_INFO 테이블에 저장합니다.")
@ApiResponses(value = {
@ -130,9 +128,7 @@ public class CrdnOwnrInfoController {
* .
*
* @param ownrInfoIds ID
* @param session HTTP
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 정보 삭제", description = "선택된 소유자 정보를 삭제합니다.")
@ApiResponses(value = {

@ -48,7 +48,6 @@ public class CrdnOwnrSelectController {
* @param crdnNo
* @param model
* @return ModelAndView
* @throws Exception
*/
@GetMapping("/crdnOwnrSelectPopup.do")
@Operation(summary = "소유자 선택 팝업", description = "소유자 선택을 위한 팝업 화면을 제공합니다.")
@ -71,7 +70,6 @@ public class CrdnOwnrSelectController {
*
* @param vo VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "소유자 목록 조회 (AJAX)", description = "TB_OWNR 테이블에서 소유자 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {

@ -88,7 +88,7 @@ public class CrdnPstnInfoController {
* @return ModelAndView
* @throws Exception
*/
@GetMapping("/popup.do")
@GetMapping("/crdnPstnInfoRegistPopup.do")
@Operation(summary = "위치정보 등록/수정 팝업", description = "위치정보 등록 또는 수정을 위한 팝업 화면을 제공합니다.")
public ModelAndView popup(
@Parameter(description = "단속 연도") @RequestParam String crdnYr,

@ -91,7 +91,6 @@ public class CrdnRegistAndViewController {
*
* @param paramVO VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "단속 목록 조회 (AJAX)", description = "단속 목록을 조회하고 JSON 형식으로 반환합니다.")
@ApiResponses(value = {
@ -122,7 +121,7 @@ public class CrdnRegistAndViewController {
* @param model
* @return /
*/
@GetMapping("/popup.do")
@GetMapping("/crdnRegistPopup.do")
@Operation(summary = "단속 등록/수정 팝업", description = "단속 등록/수정/조회 팝업 화면을 제공합니다.")
public ModelAndView popup(
@Parameter(description = "단속 연도") @RequestParam(required = false) String crdnYr,
@ -130,32 +129,26 @@ public class CrdnRegistAndViewController {
@Parameter(description = "화면 모드 (C:등록, U:수정, V:보기)") @RequestParam String mode,
Model model) {
try {
log.debug("단속 팝업 화면 요청 - 모드: {}, 단속연도: {}, 단속번호: {}", mode, crdnYr, crdnNo);
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/main/crdnRegistPopup" + TilesConstants.POPUP);
mav.addObject("mode", mode);
log.debug("단속 팝업 화면 요청 - 모드: {}, 단속연도: {}, 단속번호: {}", mode, crdnYr, crdnNo);
ModelAndView mav = new ModelAndView("crdn/crndRegistAndView/main/crdnRegistPopup" + TilesConstants.POPUP);
mav.addObject("mode", mode);
// 수정/조회 모드인 경우 기존 데이터 조회
if (("U".equals(mode) || "V".equals(mode)) && crdnYr != null && crdnNo != null) {
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
// 수정/조회 모드인 경우 기존 데이터 조회
if (("U".equals(mode) || "V".equals(mode)) && crdnYr != null && crdnNo != null) {
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
CrdnRegistAndViewVO data = service.selectOne(paramVO);
if (data != null) {
mav.addObject("data", data);
} else {
throw new MessageException("해당 단속 정보를 찾을 수 없습니다.");
}
CrdnRegistAndViewVO data = service.selectOne(paramVO);
if (data != null) {
mav.addObject("data", data);
} else {
throw new MessageException("해당 단속 정보를 찾을 수 없습니다.");
}
return mav;
} catch (Exception e) {
log.error("단속 팝업 화면 제공 중 오류 발생", e);
throw new MessageException("팝업 화면을 불러오는 중 오류가 발생했습니다.");
}
return mav;
}
/**
@ -174,36 +167,30 @@ public class CrdnRegistAndViewController {
@Parameter(description = "단속 번호") @RequestParam String crdnNo,
Model model) {
try {
log.debug("단속 상세보기 페이지 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
// 파라미터를 모델에 추가하여 JSP에서 사용할 수 있도록 함
model.addAttribute("crdnYr", crdnYr);
model.addAttribute("crdnNo", crdnNo);
// 상세보기에 필요한 공통코드 조회 (list 메서드와 동일)
// 지역구분 코드 조회
CmmnCodeSearchVO rgnSeCdSearchVO = CmmnCodeSearchVO.builder()
.searchCdGroupId("RGN_SE_CD")
.sortColumn("SORT_ORDR")
.sortAscending(true)
.build();
model.addAttribute("regionList", commonCodeService.selectCodeDetailList(rgnSeCdSearchVO));
log.debug("단속 상세보기 페이지 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
// 파라미터를 모델에 추가하여 JSP에서 사용할 수 있도록 함
model.addAttribute("crdnYr", crdnYr);
model.addAttribute("crdnNo", crdnNo);
// 상세보기에 필요한 공통코드 조회 (list 메서드와 동일)
// 지역구분 코드 조회
CmmnCodeSearchVO rgnSeCdSearchVO = CmmnCodeSearchVO.builder()
.searchCdGroupId("RGN_SE_CD")
.sortColumn("SORT_ORDR")
.sortAscending(true)
.build();
model.addAttribute("regionList", commonCodeService.selectCodeDetailList(rgnSeCdSearchVO));
// 적발방법 코드 조회
CmmnCodeSearchVO dsclMthdCdSearchVO = CmmnCodeSearchVO.builder()
.searchCdGroupId("DSCL_MTHD_CD")
.sortColumn("CD_NM")
.sortAscending(true)
.build();
model.addAttribute("dsclMthdCdList", commonCodeService.selectCodeDetailList(dsclMthdCdSearchVO));
return "crdn/crndRegistAndView/main/detailView" + TilesConstants.BASE;
} catch (Exception e) {
log.error("단속 상세보기 페이지 제공 중 오류 발생", e);
throw new MessageException("상세보기 페이지를 불러오는 중 오류가 발생했습니다.");
}
// 적발방법 코드 조회
CmmnCodeSearchVO dsclMthdCdSearchVO = CmmnCodeSearchVO.builder()
.searchCdGroupId("DSCL_MTHD_CD")
.sortColumn("CD_NM")
.sortAscending(true)
.build();
model.addAttribute("dsclMthdCdList", commonCodeService.selectCodeDetailList(dsclMthdCdSearchVO));
return "crdn/crndRegistAndView/main/detailView" + TilesConstants.BASE;
}
/**
@ -211,7 +198,6 @@ public class CrdnRegistAndViewController {
*
* @param paramVO VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "단속 등록", description = "새로운 단속 정보를 등록합니다.")
@ApiResponses(value = {
@ -220,18 +206,8 @@ public class CrdnRegistAndViewController {
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/insert.ajax")
public ResponseEntity<?> insert(@ModelAttribute CrdnRegistAndViewVO paramVO) throws Exception {
// 등록자 정보 설정
paramVO.setRgtr(SessionUtil.getUserId());
// 시군구 코드 설정 (세션의 조직 코드 사용)
paramVO.setSggCd(SessionUtil.getSessionVO().getUser().getOrgCd());
// 단속 처리 상태 코드 초기값 설정 (10: 단속)
paramVO.setCrdnPrcsSttsCd(CrdnPrcsSttsConstants.CRDN_PRCS_STTS_CD_10_CRDN);
// 단속 처리 일자는 null로 설정 (기본적으로 null)
paramVO.setCrdnPrcsYmd(null);
public ResponseEntity<?> insert(@ModelAttribute CrdnRegistAndViewVO paramVO) {
log.debug("단속 정보 등록 요청 - 단속연도: {}, 단속번호: {}", paramVO.getCrdnYr(), paramVO.getCrdnNo());
int result = service.insert(paramVO);
@ -247,7 +223,6 @@ public class CrdnRegistAndViewController {
*
* @param paramVO VO
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "단속 수정", description = "기존 단속 정보를 수정합니다.")
@ApiResponses(value = {
@ -256,7 +231,9 @@ public class CrdnRegistAndViewController {
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/update.ajax")
public ResponseEntity<?> update(@ModelAttribute CrdnRegistAndViewVO paramVO) throws Exception {
public ResponseEntity<?> update(@ModelAttribute CrdnRegistAndViewVO paramVO) {
log.debug("단속 정보 수정 요청 - 단속연도: {}, 단속번호: {}", paramVO.getCrdnYr(), paramVO.getCrdnNo());
int result = service.update(paramVO);
if (result > 0) {
@ -272,7 +249,6 @@ public class CrdnRegistAndViewController {
* @param crdnYr
* @param crdnNo
* @return ResponseEntity
* @throws Exception
*/
@Operation(summary = "단속 삭제", description = "단속 정보를 삭제(논리삭제)합니다.")
@ApiResponses(value = {
@ -281,7 +257,9 @@ public class CrdnRegistAndViewController {
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/delete.ajax")
public ResponseEntity<?> delete(@RequestParam String crdnYr, @RequestParam String crdnNo) throws Exception {
public ResponseEntity<?> delete(@RequestParam String crdnYr, @RequestParam String crdnNo) {
log.debug("단속 정보 삭제 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
@ -308,24 +286,18 @@ public class CrdnRegistAndViewController {
@Parameter(description = "단속 연도") @RequestParam String crdnYr,
@Parameter(description = "단속 번호") @RequestParam String crdnNo) {
try {
log.debug("단속 상세 조회 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
CrdnRegistAndViewVO result = service.selectOne(paramVO);
if (result != null) {
return ApiResponseUtil.success(result, "단속 정보 조회가 완료되었습니다.");
} else {
return ApiResponseUtil.error("해당 단속 정보를 찾을 수 없습니다.");
}
} catch (Exception e) {
log.error("단속 상세 조회 중 오류 발생", e);
return ApiResponseUtil.error("단속 정보 조회 중 오류가 발생했습니다.");
log.debug("단속 상세 조회 요청 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
CrdnRegistAndViewVO result = service.selectOne(paramVO);
if (result != null) {
return ApiResponseUtil.success(result, "단속 정보 조회가 완료되었습니다.");
} else {
return ApiResponseUtil.error("해당 단속 정보를 찾을 수 없습니다.");
}
}
@ -348,27 +320,21 @@ public class CrdnRegistAndViewController {
public ResponseEntity<?> updateStatus(
@Parameter(description = "단속 연도") @RequestParam String crdnYr,
@Parameter(description = "단속 번호") @RequestParam String crdnNo,
@Parameter(description = "처리 상태 코드") @RequestParam String crdnPrcsSttsCd) throws Exception {
@Parameter(description = "처리 상태 코드") @RequestParam String crdnPrcsSttsCd) {
try {
log.debug("단속 상태 업데이트 요청 - 단속연도: {}, 단속번호: {}, 상태코드: {}", crdnYr, crdnNo, crdnPrcsSttsCd);
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
paramVO.setCrdnPrcsSttsCd(crdnPrcsSttsCd);
int result = service.updateStatus(paramVO);
if (result > 0) {
return ApiResponseUtil.success("단속 상태가 성공적으로 업데이트되었습니다.");
} else {
return ApiResponseUtil.error("단속 상태 업데이트에 실패했습니다.");
}
} catch (Exception e) {
log.error("단속 상태 업데이트 중 오류 발생", e);
return ApiResponseUtil.error("단속 상태 업데이트 중 오류가 발생했습니다.");
log.debug("단속 상태 업데이트 요청 - 단속연도: {}, 단속번호: {}, 상태코드: {}", crdnYr, crdnNo, crdnPrcsSttsCd);
CrdnRegistAndViewVO paramVO = new CrdnRegistAndViewVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
paramVO.setCrdnPrcsSttsCd(crdnPrcsSttsCd);
int result = service.updateStatus(paramVO);
if (result > 0) {
return ApiResponseUtil.success("단속 상태가 성공적으로 업데이트되었습니다.");
} else {
return ApiResponseUtil.error("단속 상태 업데이트에 실패했습니다.");
}
}

@ -22,6 +22,8 @@ import static egovframework.constant.SEQConstants.SEQ_CRDN;
* author :
* date : 2025-08-25
* description :
* : / , 퀀 .
* / , .
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------

@ -226,7 +226,7 @@
if (ev.rowKey !== undefined && ev.columnName !== '_number') {
var rowData = self.instance.getRow(ev.rowKey);
if (rowData && rowData.yr && rowData.no) {
var url = '<c:url value="/baseData/bldgNewPrcCrtrAmt/popup.do"/>?yr=' +
var url = '<c:url value="/baseData/bldgNewPrcCrtrAmt/bldgNewPrcCrtrAmtPopup.do"/>?yr=' +
encodeURIComponent(rowData.yr) + '&no=' +
encodeURIComponent(rowData.no) + '&mode=V';
window.open(url, 'bldgNewPrcCrtrAmtView', 'width=700,height=350,scrollbars=yes');
@ -268,7 +268,7 @@
* 등록 팝업 열기
*/
openRegisterPopup: function() {
window.open('<c:url value="/baseData/bldgNewPrcCrtrAmt/popup.do"/>', 'bldgNewPrcCrtrAmtReg', 'width=700,height=500,scrollbars=yes');
window.open('<c:url value="/baseData/bldgNewPrcCrtrAmt/bldgNewPrcCrtrAmtPopup.do"/>', 'bldgNewPrcCrtrAmtReg', 'width=700,height=500,scrollbars=yes');
},
/**

@ -192,7 +192,7 @@
var crdnYr = $('#crdnYr').val();
var crdnNo = $('#crdnNo').val();
var popUrl = '<c:url value="/crdn/crndRegistAndView/crdnPstnInfo/popup.do"/>';
var popUrl = '<c:url value="/crdn/crndRegistAndView/crdnPstnInfo/crdnPstnInfoRegistPopup.do"/>';
var params = '?mode=U&crdnYr=' + encodeURIComponent(crdnYr) +
'&crdnNo=' + encodeURIComponent(crdnNo) +
'&pstnInfoId=' + encodeURIComponent(rowData.pstnInfoId);

@ -386,7 +386,7 @@
alert('단속 기본정보가 없습니다.');
return;
}
var url = '<c:url value="/crdn/crndRegistAndView/crdnPstnInfo/popup.do"/>' + '?crdnYr=' + encodeURIComponent(crdnYr) + '&crdnNo=' + encodeURIComponent(crdnNo) + '&mode=C';
var url = '<c:url value="/crdn/crndRegistAndView/crdnPstnInfo/crdnPstnInfoRegistPopup.do"/>' + '?crdnYr=' + encodeURIComponent(crdnYr) + '&crdnNo=' + encodeURIComponent(crdnNo) + '&mode=C';
var w = 1200, h = 500;
var left = Math.max(0, (screen.width - w) / 2);
var top = Math.max(0, (screen.height - h) / 2);

@ -429,11 +429,11 @@
* 팝업 관련 기능
*/
openRegisterPopup: function() {
window.open('<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=C', 'crdnRegistAndViewReg', 'width=800,height=700,scrollbars=yes');
window.open('<c:url value="/crdn/crndRegistAndView/crdnRegistPopup.do"/>?mode=C', 'crdnRegistAndViewReg', 'width=800,height=700,scrollbars=yes');
},
openViewPopup: function(crdnYr, crdnNo) {
var url = '<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=V&crdnYr=' +
var url = '<c:url value="/crdn/crndRegistAndView/crdnRegistPopup.do"/>?mode=V&crdnYr=' +
encodeURIComponent(crdnYr) + '&crdnNo=' +
encodeURIComponent(crdnNo);
window.open(url, 'crdnRegistAndViewView', 'width=800,height=700,scrollbars=yes');

@ -443,11 +443,11 @@
* 팝업 관련 기능
*/
openRegisterPopup: function() {
window.open('<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=C', 'crdnRegistAndViewReg', 'width=800,height=700,scrollbars=yes');
window.open('<c:url value="/crdn/crndRegistAndView/crdnRegistPopup.do"/>?mode=C', 'crdnRegistAndViewReg', 'width=800,height=700,scrollbars=yes');
},
openViewPopup: function(crdnYr, crdnNo) {
var url = '<c:url value="/crdn/crndRegistAndView/popup.do"/>?mode=V&crdnYr=' +
var url = '<c:url value="/crdn/crndRegistAndView/crdnRegistPopup.do"/>?mode=V&crdnYr=' +
encodeURIComponent(crdnYr) + '&crdnNo=' +
encodeURIComponent(crdnNo);
window.open(url, 'crdnRegistAndViewView', 'width=800,height=700,scrollbars=yes');

Loading…
Cancel
Save