단속 > 단속 등록&열람: 소유자 선택 API 호출 시 VO 사용으로 파라미터 및 중복 검증 로직 개선, Service/Mapper 리팩토링

dev
박성영 4 months ago
parent de4cc67e0a
commit b2fe1ee9f8

@ -73,10 +73,7 @@ public class CrdnOwnrInfoController {
* TB_OWNR_INFO AJAX
* , .
*
* @param crdnYr
* @param crdnNo
* @param pstnInfoId ID
* @param ownrId ID
* @param vo VO
* @return ResponseEntity
*/
@Operation(summary = "소유자 정보 저장", description = "소유자 선택 후 TB_OWNR_INFO 테이블에 저장합니다.")
@ -86,41 +83,23 @@ public class CrdnOwnrInfoController {
@ApiResponse(description = "오류로 인한 실패")
})
@PostMapping("/saveSelectedOwnr.ajax")
public ResponseEntity<?> saveSelectedOwnrAjax(
@RequestParam String crdnYr,
@RequestParam String crdnNo,
@RequestParam String pstnInfoId,
@RequestParam String ownrId) {
log.debug("소유자 정보 저장 요청 - 단속년도: {}, 단속번호: {}, 위치정보ID: {}, 소유자ID: {}", crdnYr, crdnNo, pstnInfoId, ownrId);
String rgtr = SessionUtil.getUserId(); // 기본값
// 중요로직: 중복 검증 먼저 수행
if (service.checkDuplicateOwnr(crdnYr, crdnNo,pstnInfoId, ownrId)) {
// 중복된 소유자 정보 조회하여 응답에 포함
CrdnOwnrInfoVO duplicateInfo = service.getDuplicateOwnrInfo(crdnYr, crdnNo,pstnInfoId , ownrId);
Map<String, Object> result = new HashMap<>();
result.put("success", false);
result.put("message", "해당 소유자가 이미 등록되어 있습니다.");
result.put("duplicateInfo", duplicateInfo);
return ApiResponseUtil.error("해당 소유자가 이미 등록되어 있습니다.");
}
// 중요로직: 중복이 없으면 저장 수행
int saveResult = service.saveSelectedOwnr(crdnYr, crdnNo, pstnInfoId, ownrId, rgtr);
if (saveResult > 0) {
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("message", "소유자 정보가 성공적으로 저장되었습니다.");
return ApiResponseUtil.success(result);
} else {
return ApiResponseUtil.error("소유자 정보 저장에 실패했습니다.");
}
public ResponseEntity<?> saveSelectedOwnrAjax(@ModelAttribute CrdnOwnrInfoVO vo) {
vo.setRgtr(SessionUtil.getUserId());
vo.setSggCd(SessionUtil.getSessionVO().getUser().getOrgCd());
// 중요로직: 중복이 없으면 저장 수행
int saveResult = service.saveSelectedOwnr(vo);
if (saveResult > 0) {
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("message", "소유자 정보가 성공적으로 저장되었습니다.");
return ApiResponseUtil.success(result);
} else {
return ApiResponseUtil.error("소유자 정보 저장에 실패했습니다.");
}
}
/**

@ -32,8 +32,6 @@ public interface CrdnOwnrInfoMapper {
int deleteOwnrInfo(@Param("ownrInfoId") String ownrInfoId, @Param("dltr") String dltr);
/** 중요로직: 특정 단속 건에서 소유자 중복 여부 확인 */
int checkDuplicateOwnr(@Param("crdnYr") String crdnYr, @Param("crdnNo") String crdnNo, @Param("pstnInfoId") String pstnInfoId, @Param("ownrId") String ownrId);
int checkDuplicateOwnr(CrdnOwnrInfoVO vo);
/** 중요로직: 중복된 소유자 정보 조회 (표출용) */
CrdnOwnrInfoVO selectDuplicateOwnrInfo(@Param("crdnYr") String crdnYr, @Param("crdnNo") String crdnNo, @Param("pstnInfoId") String pstnInfoId, @Param("ownrId") String ownrId);
}

@ -24,12 +24,6 @@ public interface CrdnOwnrInfoService {
// 중요로직: 다중 삭제 - 체크박스로 선택된 소유자정보들을 논리 삭제
int deleteOwnrInfos(List<String> ownrInfoIds, String dltr);
// 중요로직: 소유자 중복 검증 - 특정 단속 건에서 동일한 소유자가 이미 등록되어 있는지 확인
boolean checkDuplicateOwnr(String crdnYr, String crdnNo, String pstnInfoId, String ownrId);
// 중요로직: 중복된 소유자 정보 조회 - 중복 시 기존 소유자 정보 반환
CrdnOwnrInfoVO getDuplicateOwnrInfo(String crdnYr, String crdnNo, String pstnInfoId, String ownrId);
// 중요로직: 소유자 선택 시 TB_OWNR_INFO에 저장 - 중복 검증 후 저장
int saveSelectedOwnr(String crdnYr, String crdnNo, String pstnInfoId, String ownrId, String rgtr);
int saveSelectedOwnr(CrdnOwnrInfoVO vo);
}

@ -1,6 +1,7 @@
package go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.service.impl;
import egovframework.exception.MessageException;
import egovframework.util.ApiResponseUtil;
import egovframework.util.SessionUtil;
import go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.mapper.CrdnOwnrInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.model.CrdnOwnrInfoVO;
@ -10,7 +11,9 @@ import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* packageName : go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.service.impl
@ -86,38 +89,11 @@ public class CrdnOwnrInfoServiceImpl extends EgovAbstractServiceImpl implements
}
@Override
public boolean checkDuplicateOwnr(String crdnYr, String crdnNo, String pstnInfoId, String ownrId) {
// 중요로직: 중복 소유자 존재 여부 확인 (0보다 크면 중복)
int count = mapper.checkDuplicateOwnr(crdnYr, crdnNo, pstnInfoId ,ownrId);
return count > 0;
}
@Override
public CrdnOwnrInfoVO getDuplicateOwnrInfo(String crdnYr, String crdnNo, String pstnInfoId, String ownrId) {
// 중요로직: 중복된 소유자 정보 조회
return mapper.selectDuplicateOwnrInfo(crdnYr, crdnNo, pstnInfoId, ownrId);
}
@Override
public int saveSelectedOwnr(String crdnYr, String crdnNo, String pstnInfoId, String ownrId, String rgtr) {
// 중요로직: 중복 검증 후 저장
if (checkDuplicateOwnr(crdnYr, crdnNo,pstnInfoId, ownrId)) {
public int saveSelectedOwnr(CrdnOwnrInfoVO vo) { // 중요로직: 중복 검증 후 저장
if (mapper.checkDuplicateOwnr(vo) > 0) {
throw new MessageException("해당 단속 건에 동일한 소유자가 이미 등록되어 있습니다.");
}
// 중요로직: TB_OWNR_INFO 테이블에 저장할 VO 생성
CrdnOwnrInfoVO vo = CrdnOwnrInfoVO.builder()
.crdnYr(crdnYr)
.crdnNo(crdnNo)
.pstnInfoId(pstnInfoId)
.ownrId(ownrId)
.rgtr(rgtr)
.delYn("N")
.build();
// 중요로직: SessionUtil에서 조직 코드를 가져와서 SGG_CD 설정
vo.setSggCd(SessionUtil.getSessionVO().getUser().getOrgCd());
return mapper.insertOwnrInfo(vo);
}
}
Loading…
Cancel
Save