초기 셋팅
parent
ed04c2ae65
commit
b10769679a
@ -1,63 +0,0 @@
|
||||
package go.kr.project.carInspectionPenalty.search.controller;
|
||||
|
||||
import egovframework.constant.TilesConstants;
|
||||
import egovframework.util.ApiResponseUtil;
|
||||
import go.kr.project.api.service.VehicleInfoService;
|
||||
import go.kr.project.api.model.VehicleApiResponseVO;
|
||||
import go.kr.project.common.service.CommonCodeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/carInspectionPenalty/search")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Tag(name = "자동차 검사 과태료 조회", description = "자동차 검사 과태료 조회 API")
|
||||
public class CarInspectionPenaltyController {
|
||||
|
||||
private final CommonCodeService commonCodeService;
|
||||
private final VehicleInfoService vehicleInfoService;
|
||||
|
||||
@GetMapping("/list.do")
|
||||
public String list( Model model ) {
|
||||
|
||||
return "carInspectionPenalty/search/list" + TilesConstants.BASE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 차량 정보 조회 API
|
||||
* 여러 차량번호를 받아서 차량 정보를 조회합니다.
|
||||
* 설정(vmis.integration.mode)에 따라 내부 모듈 또는 외부 API를 호출합니다.
|
||||
*
|
||||
* @param vehicleNumbers 차량번호 리스트
|
||||
* @return 차량 정보 조회 결과
|
||||
*/
|
||||
@PostMapping("/getVehiclesInfo.do")
|
||||
@ResponseBody
|
||||
@Operation(summary = "차량 정보 조회", description = "차량번호 리스트를 받아서 차량 기본정보와 등록원부 정보를 조회합니다.")
|
||||
public ResponseEntity<?> getVehiclesInfo(@RequestBody List<String> vehicleNumbers) {
|
||||
log.info("차량 정보 조회 요청 - 차량 수: {}", vehicleNumbers.size());
|
||||
|
||||
try {
|
||||
// 차량 정보 조회 (설정에 따라 internal/external 자동 선택)
|
||||
List<VehicleApiResponseVO> vehicles = vehicleInfoService.getVehiclesInfo(vehicleNumbers);
|
||||
|
||||
log.info("차량 정보 조회 완료 - 총 {}건", vehicles.size());
|
||||
|
||||
return ApiResponseUtil.success(vehicles, "차량 정보 조회가 완료되었습니다.");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("차량 정보 조회 중 오류 발생", e);
|
||||
return ApiResponseUtil.error("조회 중 오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,211 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
|
||||
|
||||
<!-- Main body -->
|
||||
<div class="main_body">
|
||||
<section id="section8" class="main_bars">
|
||||
<div class="bgs-main">
|
||||
<section id="section5">
|
||||
<div class="sub_title"></div>
|
||||
<button type="button" id="registerBtn" class="newbtn bg1">등록</button>
|
||||
<button type="button" id="updaterBtn" class="newbtn bg4">수정</button>
|
||||
<button type="button" id="excelDownBtn" class="newbtn bg5 iconz">
|
||||
<span class="mdi mdi-microsoft-excel"></span>엑셀 다운로드
|
||||
</button>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
<div class="contants_body">
|
||||
<div class="gs_b_top">
|
||||
<ul class="lef">
|
||||
<li class="th">단속 년도</li>
|
||||
<li>
|
||||
<input type="text" id="schCrdnYr" name="schCrdnYr" maxlength="4" class="input calender yearpicker" style="width: 80px;" autocomplete="off" value="${empty param.schCrdnYr ? dateUtil:getCurrentDateTime('yyyy') : param.schCrdnYr}"/>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="rig2">
|
||||
<li><button type="button" id="search_btn" class="newbtnss bg1">검색</button></li>
|
||||
<li><button type="button" id="reset_btn" class="newbtnss bg5" style="margin-left: 5px;">초기화</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gs_booking">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box_column">
|
||||
<ul class="box_title" style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<li class="tit">단속 목록</li>
|
||||
<li class="rig">
|
||||
<button type="button" id="btnCarExternalApiCall" class="newbtn bg2-1">차량조회</button>
|
||||
|
||||
<span id="totalCount" class="total-count" style="padding-left: 25px;padding-right: 25px;">총 0건</span>
|
||||
<select id="perPageSelect" class="input" style="width: 112px; ">
|
||||
<option value="15">페이지당 15</option>
|
||||
<option value="50">페이지당 50</option>
|
||||
<option value="100">페이지당 100</option>
|
||||
</select>
|
||||
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><span id="totalPages"></span> Pages</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Main body -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
/**
|
||||
* 단속 등록/조회 목록 관리 모듈
|
||||
* 단속 목록을 조회하고 관리하는 기능을 제공합니다.
|
||||
*/
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var SEARCH_COND = {};
|
||||
|
||||
// 페이징 정보를 저장할 전역 변수
|
||||
var GRID_PAGINATION_INFO = {
|
||||
totalCount: 0,
|
||||
page: 0,
|
||||
perPage: 0
|
||||
};
|
||||
|
||||
// 검색정보 설정
|
||||
var setSearchCond = function() {
|
||||
var schCrdnYr = $.trim(nvl($("#schCrdnYr").val(), ""));
|
||||
|
||||
SEARCH_COND.schCrdnYr = schCrdnYr;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 단속 목록 관리 네임스페이스
|
||||
*/
|
||||
var CrdnRegistAndViewList = {
|
||||
/**
|
||||
* 선택된 행 정보
|
||||
*/
|
||||
selectedRow: null,
|
||||
|
||||
|
||||
/**
|
||||
* 이벤트 핸들러 설정
|
||||
*/
|
||||
eventBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
// 검색 버튼 클릭 이벤트
|
||||
$("#search_btn").on('click', function() {
|
||||
|
||||
});
|
||||
|
||||
// 초기화 버튼 클릭 이벤트
|
||||
$("#reset_btn").on('click', function() {
|
||||
// 모든 검색 조건 초기화
|
||||
$("#schCrdnYr").val("${dateUtil:getCurrentDateTime('yyyy')}"); // 현재 년도로 초기화
|
||||
|
||||
});
|
||||
|
||||
// 등록 버튼 클릭 이벤트
|
||||
$("#registerBtn").on('click', function() {
|
||||
self.openRegisterPopup();
|
||||
});
|
||||
|
||||
// 차량조회 버튼 클릭 이벤트
|
||||
$("#btnCarExternalApiCall").on('click', function() {
|
||||
self.callVehicleApi();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 차량 정보 조회 API 호출
|
||||
*/
|
||||
callVehicleApi: function() {
|
||||
var self = this;
|
||||
|
||||
// 임시 테스트용 차량번호 (실제로는 그리드에서 선택된 차량번호를 가져와야 함)
|
||||
var vehicleNumbers = ["12가3456", "34나5678", "56다7890", "78라1234", "90마5678",
|
||||
"12바9012", "34사3456", "56아7890", "78자1234", "90차5678",
|
||||
"12카9012", "34타3456", "56파7890", "78하1234", "90거5678"];
|
||||
|
||||
// 확인 메시지
|
||||
if (!confirm("총 " + vehicleNumbers.length + "건의 차량 정보를 조회하시겠습니까?")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// API 호출
|
||||
$.ajax({
|
||||
url: '/carInspectionPenalty/search/getVehiclesInfo.do',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(vehicleNumbers),
|
||||
success: function(response) {
|
||||
|
||||
if (response.success) {
|
||||
console.log("차량 정보 조회 성공:", response.data);
|
||||
|
||||
// 성공/실패 건수 계산
|
||||
var successCount = 0;
|
||||
var failCount = 0;
|
||||
|
||||
response.data.forEach(function(vehicle) {
|
||||
if (vehicle.success) {
|
||||
successCount++;
|
||||
console.log("차량번호: " + vehicle.vhrno + " 조회 성공");
|
||||
console.log("- 기본정보:", vehicle.basicInfo);
|
||||
console.log("- 등록원부:", vehicle.ledgerInfo);
|
||||
} else {
|
||||
failCount++;
|
||||
console.log("차량번호: " + vehicle.vhrno + " 조회 실패 - " + vehicle.message);
|
||||
}
|
||||
});
|
||||
|
||||
// 결과 메시지 표시
|
||||
alert("차량 정보 조회가 완료되었습니다.\n\n" +
|
||||
"성공: " + successCount + "건\n" +
|
||||
"실패: " + failCount + "건\n\n" +
|
||||
"자세한 내용은 콘솔을 확인하세요.");
|
||||
|
||||
// TODO: 조회된 정보를 그리드에 표시하거나 DB에 저장하는 로직 추가
|
||||
|
||||
} else {
|
||||
alert("차량 정보 조회에 실패했습니다.\n\n" + response.message);
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error("API 호출 오류:", error);
|
||||
alert("차량 정보 조회 중 오류가 발생했습니다.\n\n" + error);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 모듈 초기화
|
||||
*/
|
||||
init: function() {
|
||||
|
||||
|
||||
// 이벤트 핸들러 설정
|
||||
this.eventBindEvents();
|
||||
}
|
||||
};
|
||||
|
||||
// DOM 준비 완료 시 초기화
|
||||
$(document).ready(function() {
|
||||
CrdnRegistAndViewList.init();
|
||||
});
|
||||
|
||||
// 전역 네임스페이스에 모듈 노출
|
||||
window.CrdnRegistAndViewList = CrdnRegistAndViewList;
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
Loading…
Reference in New Issue