|
|
|
|
@ -36,28 +36,28 @@ import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 자동차 과태료 대상 등록 Controller
|
|
|
|
|
* 과태료 대상 목록 조회, TXT 파일 업로드 기능 제공
|
|
|
|
|
* 자동차 지연 과태료 대상 등록 Controller
|
|
|
|
|
* 지연 과태료 대상 목록 조회, TXT 파일 업로드 기능 제공
|
|
|
|
|
*/
|
|
|
|
|
@Controller
|
|
|
|
|
@RequestMapping("/carInspectionPenalty/registration")
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Tag(name = "자동차 과태료 대상 등록", description = "자동차 과태료 대상 등록 및 목록 조회 API")
|
|
|
|
|
@Tag(name = "자동차 지연 과태료 대상 등록", description = "자동차 지연 과태료 대상 등록 및 목록 조회 API")
|
|
|
|
|
public class CarFfnlgTrgtController {
|
|
|
|
|
|
|
|
|
|
private final CarFfnlgTrgtService service;
|
|
|
|
|
private final CommonCodeService commonCodeService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 목록 화면
|
|
|
|
|
* 지연 과태료 대상 목록 화면
|
|
|
|
|
* @param model 모델
|
|
|
|
|
* @return 목록 화면 경로
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/list.do")
|
|
|
|
|
@Operation(summary = "과태료 대상 목록 화면", description = "과태료 대상 목록 조회 화면을 제공합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 목록 화면", description = "지연 과태료 대상 목록 조회 화면을 제공합니다.")
|
|
|
|
|
public String list(Model model) {
|
|
|
|
|
log.debug("과태료 대상 목록 화면 요청");
|
|
|
|
|
log.debug("지연 과태료 대상 목록 화면 요청");
|
|
|
|
|
|
|
|
|
|
// 업무 처리 상태 코드 조회 (공통코드)
|
|
|
|
|
CmmnCodeSearchVO taskPrcsSttsCdSearchVO = CmmnCodeSearchVO.builder()
|
|
|
|
|
@ -68,7 +68,7 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
.build();
|
|
|
|
|
model.addAttribute("taskPrcsSttsCdList", commonCodeService.selectCodeDetailList(taskPrcsSttsCdSearchVO));
|
|
|
|
|
|
|
|
|
|
// 과태료 대상 구분 코드 조회 (공통코드)
|
|
|
|
|
// 지연 과태료 대상 구분 코드 조회 (공통코드)
|
|
|
|
|
CmmnCodeSearchVO ffnlgTrgtSeCdSearchVO = CmmnCodeSearchVO.builder()
|
|
|
|
|
.searchCdGroupId("FFNLG_TRGT_SE_CD")
|
|
|
|
|
.searchUseYn("Y")
|
|
|
|
|
@ -81,14 +81,14 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 목록 조회 AJAX
|
|
|
|
|
* 지연 과태료 대상 목록 조회 AJAX
|
|
|
|
|
* @param paramVO 검색 조건
|
|
|
|
|
* @return 목록 데이터
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/list.ajax")
|
|
|
|
|
@Operation(summary = "과태료 대상 목록 조회", description = "과태료 대상 목록을 조회하고 JSON 형식으로 반환합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 목록 조회", description = "지연 과태료 대상 목록을 조회하고 JSON 형식으로 반환합니다.")
|
|
|
|
|
public ResponseEntity<?> listAjax(@ModelAttribute CarFfnlgTrgtVO paramVO) {
|
|
|
|
|
log.debug("과태료 대상 목록 조회 AJAX - 검색조건: {}", paramVO);
|
|
|
|
|
log.debug("지연 과태료 대상 목록 조회 AJAX - 검색조건: {}", paramVO);
|
|
|
|
|
|
|
|
|
|
// 1. 총 개수 조회
|
|
|
|
|
int totalCount = service.selectListTotalCount(paramVO);
|
|
|
|
|
@ -106,13 +106,13 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 목록 다운로드 (EUC-KR 텍스트)
|
|
|
|
|
* 지연 과태료 대상 목록 다운로드 (EUC-KR 텍스트)
|
|
|
|
|
* 샘플 파일과 동일한 고정폭 포맷으로 생성하여 다운로드 제공합니다.
|
|
|
|
|
* - 인코딩: EUC-KR (한글 2바이트)
|
|
|
|
|
* - 헤더/구분선/컬럼 구성은 docs/샘플용-EUC-KR.txt와 동일
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/download.do")
|
|
|
|
|
@Operation(summary = "과태료 대상 목록 다운로드", description = "EUC-KR 인코딩의 고정폭 텍스트로 목록을 샘플과 동일한 포맷으로 다운로드합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 목록 다운로드", description = "EUC-KR 인코딩의 고정폭 텍스트로 목록을 샘플과 동일한 포맷으로 다운로드합니다.")
|
|
|
|
|
public void download(
|
|
|
|
|
@ModelAttribute CarFfnlgTrgtVO paramVO,
|
|
|
|
|
HttpServletResponse response
|
|
|
|
|
@ -227,16 +227,16 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 상세 조회
|
|
|
|
|
* @param carFfnlgTrgtId 과태료 대상 ID
|
|
|
|
|
* 지연 과태료 대상 상세 조회
|
|
|
|
|
* @param carFfnlgTrgtId 지연 과태료 대상 ID
|
|
|
|
|
* @return 상세 정보
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/selectOne.ajax")
|
|
|
|
|
@Operation(summary = "과태료 대상 상세 조회", description = "과태료 대상 상세 정보를 조회합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 상세 조회", description = "지연 과태료 대상 상세 정보를 조회합니다.")
|
|
|
|
|
public ResponseEntity<?> selectOne(
|
|
|
|
|
@Parameter(description = "과태료 대상 ID") @RequestParam String carFfnlgTrgtId) {
|
|
|
|
|
@Parameter(description = "지연 과태료 대상 ID") @RequestParam String carFfnlgTrgtId) {
|
|
|
|
|
|
|
|
|
|
log.debug("과태료 대상 상세 조회 - ID: {}", carFfnlgTrgtId);
|
|
|
|
|
log.debug("지연 과태료 대상 상세 조회 - ID: {}", carFfnlgTrgtId);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
CarFfnlgTrgtVO vo = new CarFfnlgTrgtVO();
|
|
|
|
|
@ -251,22 +251,22 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("과태료 대상 상세 조회 중 오류 발생", e);
|
|
|
|
|
log.error("지연 과태료 대상 상세 조회 중 오류 발생", e);
|
|
|
|
|
return ApiResponseUtil.error("조회 중 오류가 발생했습니다: " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 삭제 (논리삭제)
|
|
|
|
|
* @param carFfnlgTrgtId 과태료 대상 ID
|
|
|
|
|
* 지연 과태료 대상 삭제 (논리삭제)
|
|
|
|
|
* @param carFfnlgTrgtId 지연 과태료 대상 ID
|
|
|
|
|
* @return 삭제 결과
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/delete.ajax")
|
|
|
|
|
@Operation(summary = "과태료 대상 삭제", description = "과태료 대상을 삭제(논리삭제)합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 삭제", description = "지연 과태료 대상을 삭제(논리삭제)합니다.")
|
|
|
|
|
public ResponseEntity<?> delete(
|
|
|
|
|
@Parameter(description = "과태료 대상 ID") @RequestParam String carFfnlgTrgtId) {
|
|
|
|
|
@Parameter(description = "지연 과태료 대상 ID") @RequestParam String carFfnlgTrgtId) {
|
|
|
|
|
|
|
|
|
|
log.info("과태료 대상 삭제 요청 - ID: {}", carFfnlgTrgtId);
|
|
|
|
|
log.info("지연 과태료 대상 삭제 요청 - ID: {}", carFfnlgTrgtId);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
String dltr = SessionUtil.getUserId();
|
|
|
|
|
@ -287,14 +287,14 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("과태료 대상 삭제 중 오류 발생", e);
|
|
|
|
|
log.error("지연 과태료 대상 삭제 중 오류 발생", e);
|
|
|
|
|
return ApiResponseUtil.error("삭제 중 오류가 발생했습니다: " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 선택된 목록에 대해 API 호출 및 기본정보/등록원부 비교
|
|
|
|
|
* @param targetList 선택된 과태료 대상 목록
|
|
|
|
|
* @param targetList 선택된 지연 과태료 대상 목록
|
|
|
|
|
* @return 비교 결과
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/compareWithApi.ajax")
|
|
|
|
|
@ -369,13 +369,13 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 일괄 삭제
|
|
|
|
|
* @param deleteIds 삭제할 과태료 대상 ID 목록
|
|
|
|
|
* 지연 과태료 대상 일괄 삭제
|
|
|
|
|
* @param deleteIds 삭제할 지연 과태료 대상 ID 목록
|
|
|
|
|
* @return 삭제 결과
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/deleteBatch.ajax")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
@Operation(summary = "과태료 대상 일괄 삭제", description = "선택된 과태료 대상 목록을 일괄 삭제합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 일괄 삭제", description = "선택된 지연 과태료 대상 목록을 일괄 삭제합니다.")
|
|
|
|
|
public ResponseEntity<?> deleteBatch(@RequestBody List<String> deleteIds) {
|
|
|
|
|
log.info("일괄 삭제 요청 - 선택된 데이터 건수: {}", deleteIds != null ? deleteIds.size() : 0);
|
|
|
|
|
|
|
|
|
|
@ -419,7 +419,7 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 정보를 일괄 저장하는 AJAX 메소드
|
|
|
|
|
* 지연 과태료 대상 정보를 일괄 저장하는 AJAX 메소드
|
|
|
|
|
* 생성, 수정, 삭제된 데이터를 처리합니다.
|
|
|
|
|
*
|
|
|
|
|
* @param modifyData 생성/수정/삭제할 데이터를 담은 VO 객체
|
|
|
|
|
@ -427,9 +427,9 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/saveAll.ajax")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
@Operation(summary = "과태료 대상 정보 일괄 저장", description = "생성, 수정, 삭제된 과태료 대상 데이터를 일괄 처리합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 정보 일괄 저장", description = "생성, 수정, 삭제된 지연 과태료 대상 데이터를 일괄 처리합니다.")
|
|
|
|
|
public ResponseEntity<?> saveAllAjax(@RequestBody CarFfnlgTrgtModifiedDataVO modifyData) {
|
|
|
|
|
log.info("과태료 대상 일괄 저장 요청 - 수정: {}건, 생성: {}건, 삭제: {}건",
|
|
|
|
|
log.info("지연 과태료 대상 일괄 저장 요청 - 수정: {}건, 생성: {}건, 삭제: {}건",
|
|
|
|
|
modifyData.getUpdatedRows() != null ? modifyData.getUpdatedRows().size() : 0,
|
|
|
|
|
modifyData.getCreatedRows() != null ? modifyData.getCreatedRows().size() : 0,
|
|
|
|
|
modifyData.getDeletedRows() != null ? modifyData.getDeletedRows().size() : 0);
|
|
|
|
|
@ -437,12 +437,12 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
try {
|
|
|
|
|
int result = service.saveCarFfnlgTrgts(modifyData);
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
return ApiResponseUtil.success("과태료 대상 정보가 저장되었습니다.");
|
|
|
|
|
return ApiResponseUtil.success("지연 과태료 대상 정보가 저장되었습니다.");
|
|
|
|
|
} else {
|
|
|
|
|
return ApiResponseUtil.error("저장할 데이터가 없습니다.");
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("과태료 대상 일괄 저장 중 오류 발생", e);
|
|
|
|
|
log.error("지연 과태료 대상 일괄 저장 중 오류 발생", e);
|
|
|
|
|
return ApiResponseUtil.error("저장 중 오류가 발생했습니다: " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -534,32 +534,32 @@ public class CarFfnlgTrgtController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 과태료 대상 목록 엑셀 다운로드
|
|
|
|
|
* 지연 과태료 대상 목록 엑셀 다운로드
|
|
|
|
|
*
|
|
|
|
|
* @param paramVO 검색 조건을 담은 VO 객체
|
|
|
|
|
* @param request HTTP 요청 객체
|
|
|
|
|
* @param response HTTP 응답 객체
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/excel.do")
|
|
|
|
|
@Operation(summary = "과태료 대상 목록 엑셀 다운로드", description = "과태료 대상 목록을 엑셀 파일로 다운로드합니다.")
|
|
|
|
|
@Operation(summary = "지연 과태료 대상 목록 엑셀 다운로드", description = "지연 과태료 대상 목록을 엑셀 파일로 다운로드합니다.")
|
|
|
|
|
public void downloadExcel(
|
|
|
|
|
@ModelAttribute CarFfnlgTrgtVO paramVO,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response) {
|
|
|
|
|
try {
|
|
|
|
|
log.debug("과태료 대상 목록 엑셀 다운로드 요청");
|
|
|
|
|
log.debug("지연 과태료 대상 목록 엑셀 다운로드 요청");
|
|
|
|
|
|
|
|
|
|
// 페이징 처리 없이 전체 데이터 조회
|
|
|
|
|
paramVO.setPagingYn("N");
|
|
|
|
|
|
|
|
|
|
// 과태료 대상 목록 조회
|
|
|
|
|
// 지연 과태료 대상 목록 조회
|
|
|
|
|
List<CarFfnlgTrgtExcelVO> excelList = service.selectListForExcel(paramVO);
|
|
|
|
|
|
|
|
|
|
// 엑셀 파일 생성 및 다운로드
|
|
|
|
|
String filename = "과태료대상목록_" + java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".xlsx";
|
|
|
|
|
new SxssfExcelFile(ExcelSheetData.of(excelList, CarFfnlgTrgtExcelVO.class, "과태료 대상 목록 " + excelList.size() + "건"), request, response, filename);
|
|
|
|
|
new SxssfExcelFile(ExcelSheetData.of(excelList, CarFfnlgTrgtExcelVO.class, "지연 과태료 대상 목록 " + excelList.size() + "건"), request, response, filename);
|
|
|
|
|
|
|
|
|
|
log.debug("과태료 대상 목록 엑셀 다운로드 완료 - 파일명: {}, 건수: {}", filename, excelList.size());
|
|
|
|
|
log.debug("지연 과태료 대상 목록 엑셀 다운로드 완료 - 파일명: {}, 건수: {}", filename, excelList.size());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("엑셀 다운로드 중 오류 발생", e);
|
|
|
|
|
}
|
|
|
|
|
|