### feat: 날짜 형식 개선 및 불필요한 페이징 제거

- **날짜 형식 포맷 통일**
  - 기존 `yyyyMMdd` → `yyyy-MM-dd` 포맷 변경.
  - `AbstractComparisonChecker` 및 `AbstractComparisonOmChecker`에 `DATE_FORMATTER_DASH` 상수 추가.
  - 모든 `delay_checker` 및 `om_checker` 클래스에서 `DATE_FORMATTER_DASH` 적용.

- **JSP 초기값 수정**
  - `schRcptYmdStart` 검색 기간 초기값 조정:
    - 기존 `-15일` → `-10일`로 변경.
  - 초기화 버튼 클릭 시 변경된 초기값 반영.

- **페이징 UI 및 로직 제거**
  - 불필요한 페이징 관련 코드 삭제:
    - JSP에서 `perPageSelect`, `currentPage`, `totalPages` 삭제.
    - JS에서 관련 전역 변수(`GRID_PAGINATION_INFO`) 및 `setOptPageOptions` 코드 제거.
    - `readData` 메서드 호출 시 항상 첫 페이지(`1`) 로드하도록 변경.
  - 그리드에서 일련번호 계산 단순화:
    - 기존 전체 페이지 기반 → 현재 페이지의 키 값만 사용.

- **DB 변경**
  - `tb_car_ffnlg_trgt_incmp` 스키마에서 날짜 필드 길이 확장:
    - `RCPT_YMD`, `TASK_PRCS_YMD`, `CAR_REG_FRMBK_CHG_YMD` 등 날짜 관련 필드 길이 `8 → 10`.

- **기타**
  - JSP 및 JS에서 사용하지 않는 포맷팅 코드 제거:
    - `moment()` 호출 비활성화 및 주석화.
main
박성영 4 days ago
parent 7051953c82
commit 33fcb754fc

@ -2,7 +2,7 @@ create table tb_car_ffnlg_trgt_incmp
(
CAR_FFNLG_TRGT_INCMP_ID varchar(20) not null comment '자동차 과태료 대상 미필 ID'
primary key,
RCPT_YMD varchar(8) null comment '접수 일자',
RCPT_YMD varchar(10) null comment '접수 일자',
PRGRM_ID varchar(10) null comment '프로그램 ID',
PRCS_YMD varchar(100) null comment '처리 일자',
OTPT_DT varchar(100) null comment '출력 일시',
@ -15,7 +15,7 @@ create table tb_car_ffnlg_trgt_incmp
USE_STRHLD_ADDR_DTL varchar(600) null comment '사용 본거지 주소 상세',
INSP_VLD_PRD varchar(30) null comment '검사 유효 기간',
TASK_PRCS_STTS_CD varchar(2) null comment '업무 처리 상태 코드',
TASK_PRCS_YMD varchar(8) null comment '업무 처리 일자',
TASK_PRCS_YMD varchar(10) null comment '업무 처리 일자',
RMRK varchar(4000) null comment '비고',
RMRK_DTL TEXT null comment '비고 상세',
CAR_BASS_MATTER_INQIRE_ID varchar(20) null comment '자동차 기본 사항 조회 ID',
@ -25,7 +25,7 @@ create table tb_car_ffnlg_trgt_incmp
CAR_BSC_MTTR_INQ_SGG_NM varchar(75) null comment '자동차 기본 사항 조회 시군구 명',
CAR_REG_FRMBK_CHG_TASK_SE_CD varchar(2) null comment '자동차 등록 원부갑 변경 업무 구분 코드',
CAR_REG_FRMBK_CHG_TASK_SE_NM varchar(75) null comment '자동차 등록 원부갑 변경 업무 구분 명',
CAR_REG_FRMBK_CHG_YMD varchar(8) null comment '자동차 등록 원부갑 변경 일자',
CAR_REG_FRMBK_CHG_YMD varchar(10) null comment '자동차 등록 원부갑 변경 일자',
CAR_REG_FRMBK_DTL varchar(2000) null comment '자동차 등록 원부갑 상세',
REG_DT datetime null comment '등록 일시',
RGTR varchar(11) null comment '등록자',

@ -1207,7 +1207,7 @@ public class CarFfnlgTrgtServiceImpl extends EgovAbstractServiceImpl implements
List<CarFfnlgTrgtVO> updatedRows = modifyData.getUpdatedRows();
if (updatedRows != null && !updatedRows.isEmpty()) {
for (CarFfnlgTrgtVO vo : updatedRows) {
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
result += mapper.updateTaskPrcsSttsCdAndRmrk(vo);
}
}

@ -26,6 +26,7 @@ public abstract class AbstractComparisonChecker implements ComparisonChecker {
protected final VmisCarLedgerFrmbkLogService ledgerLogService;
protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
protected static final DateTimeFormatter DATE_FORMATTER_DASH = DateTimeFormatter.ofPattern("yyyy-MM-dd");
/**
* ()

@ -219,7 +219,7 @@ public class OwnerCloseWithin31Checker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_04_INVESTIGATION_CLOSED);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -219,7 +219,7 @@ public class OwnerLevyOver31Checker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_05_DATE_MODIFIED_LEVY);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -219,7 +219,7 @@ public class ProductCloseWithin31Checker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_04_INVESTIGATION_CLOSED);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -221,7 +221,7 @@ public class ProductLevyOver31Checker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_05_DATE_MODIFIED_LEVY);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -213,7 +213,7 @@ public class ProductUseChecker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_02_PRODUCT_USE);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -218,7 +218,7 @@ public class ProductUseChnageChecker extends AbstractComparisonChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_02_PRODUCT_USE);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -137,7 +137,7 @@ public class TransferCase115DayChecker extends AbstractComparisonChecker {
// DB 업데이트
existingData.setCarBassMatterInqireId(response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_03_TRANSFER);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(existingData.getOwnrNm());
existingData.setCarBscMttrInqSggCd(sggCd);
existingData.setCarBscMttrInqSggNm(sggNm);

@ -108,7 +108,7 @@ public class CarFfnlgTrgtIncmpController {
paramVO.setTotalCount(totalCount);
// 3. 페이징 활성화
paramVO.setPagingYn("Y");
//paramVO.setPagingYn("Y");
// 목록 조회
List<CarFfnlgTrgtIncmpVO> list = service.selectList(paramVO);

@ -47,6 +47,7 @@ public class CarFfnlgTrgtIncmpServiceImpl extends EgovAbstractServiceImpl implem
private final TransactionTemplate transactionTemplate;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
private static final DateTimeFormatter DATE_FORMATTER_DASH = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public int selectListTotalCount(CarFfnlgTrgtIncmpVO vo) {
@ -230,8 +231,8 @@ public class CarFfnlgTrgtIncmpServiceImpl extends EgovAbstractServiceImpl implem
// 업무 처리 상태 및 등록자 설정
vo.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_01_RCPT);
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
vo.setRcptYmd(LocalDate.now().format(DATE_FORMATTER));
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
vo.setRcptYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
vo.setRgtr(rgtr);
// DB 저장
@ -653,7 +654,7 @@ public class CarFfnlgTrgtIncmpServiceImpl extends EgovAbstractServiceImpl implem
List<CarFfnlgTrgtIncmpVO> updatedRows = modifyData.getUpdatedRows();
if (updatedRows != null && !updatedRows.isEmpty()) {
for (CarFfnlgTrgtIncmpVO vo : updatedRows) {
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
vo.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
result += mapper.updateTaskPrcsSttsCdAndRmrk(vo);
}
}

@ -27,6 +27,7 @@ public abstract class AbstractComparisonOmChecker implements ComparisonOmChecker
protected final VmisCarLedgerFrmbkLogService ledgerLogService;
protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
protected static final DateTimeFormatter DATE_FORMATTER_DASH = DateTimeFormatter.ofPattern("yyyy-MM-dd");
/**
* ()

@ -54,8 +54,8 @@ public class OwnerTransferOmChecker extends AbstractComparisonOmChecker {
@Override
public String check(CarFfnlgTrgtIncmpVO existingData, String userOrgCd) {
String vhclno = existingData.getVhclno();
String levyCrtrYmd = existingData.getLevyCrtrYmd(); // 미필: 검사유효기간 종료일 + 146일
String inspVldPrd = existingData.getInspVldPrd(); // 검사유효기간
String levyCrtrYmd = existingData.getLevyCrtrYmd().replace("-", ""); // 미필: 검사유효기간 종료일 + 146일
String inspVldPrd = existingData.getInspVldPrd().replace("-", ""); // 검사유효기간
// 검사유효기간에서 시작일과 종료일 추출
String inspVldPrdStart = null;
@ -250,7 +250,7 @@ public class OwnerTransferOmChecker extends AbstractComparisonOmChecker {
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd().replace("-", ""));
existingData.setCarRegFrmbkChgYmd(targetRecord.getChgYmd());
existingData.setCarRegFrmbkDtl(ComparisonOmRemarkBuilder.buildLedgerRecordDetail(targetRecord));
existingData.setRmrk(rmrk);
existingData.setRmrkDtl(rmrkDtl);

@ -228,7 +228,7 @@ public class ProductUseOmChecker extends AbstractComparisonOmChecker {
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setCarLedgerFrmbkId(step3Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_02_PRODUCT_USE);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step4OwnerName);
existingData.setCarRegFrmbkChgTaskSeCd(targetRecord.getChgTaskSeCd());
existingData.setCarRegFrmbkChgTaskSeNm(targetRecord.getChgTaskSeNm());

@ -186,7 +186,7 @@ public class TransferOmChecker extends AbstractComparisonOmChecker {
// DB 업데이트
existingData.setCarBassMatterInqireId(step1Response.getGeneratedId());
existingData.setTaskPrcsSttsCd(TaskPrcsSttsConstants.TASK_PRCS_STTS_CD_03_TRANSFER);
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER));
existingData.setTaskPrcsYmd(LocalDate.now().format(DATE_FORMATTER_DASH));
existingData.setCarBscMttrInqFlnm(step1RprsOwnrNm);
existingData.setCarBscMttrInqSggCd(sggCd);
existingData.setCarBscMttrInqSggNm(sggNm);

@ -25,7 +25,7 @@
<ul class="lef">
<li class="th">접수일자</li>
<li>
<input type="text" id="schRcptYmdStart" name="schRcptYmdStart" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -15)}"/> ~
<input type="text" id="schRcptYmdStart" name="schRcptYmdStart" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -10)}"/> ~
<input type="text" id="schRcptYmdEnd" name="schRcptYmdEnd" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}"/>
</li>
<li class="th">검사일자</li>
@ -643,11 +643,8 @@
// 취소 확인
if (confirm('모든 변경사항을 취소하시겠습니까?')) {
// 현재 페이지 저장
var currentPage = this.instance.getPagination().getCurrentPage();
// 그리드 데이터를 다시 로드하여 모든 변경사항 취소
this.instance.readData(currentPage);
this.instance.readData(1);
}
},
@ -721,7 +718,7 @@
// 초기화 버튼 클릭
$("#reset_btn").on('click', function() {
$("#schRcptYmdStart").val("${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -15)}");
$("#schRcptYmdStart").val("${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -10)}");
$("#schRcptYmdEnd").val("${dateUtil:getCurrentDateTime('yyyy-MM-dd')}");
$("#schInspYmdStart").val("");
$("#schInspYmdEnd").val("");

@ -25,7 +25,7 @@
<ul class="lef">
<li class="th">접수일자</li>
<li>
<input type="text" id="schRcptYmdStart" name="schRcptYmdStart" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -15)}"/> ~
<input type="text" id="schRcptYmdStart" name="schRcptYmdStart" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -10)}"/> ~
<input type="text" id="schRcptYmdEnd" name="schRcptYmdEnd" class="input calender datepicker" style="width: 120px;" autocomplete="off" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}"/>
</li>
<li class="th">차량번호</li>
@ -65,12 +65,6 @@
<button type="button" id="btn_save" class="newbtn bg4">저장</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">
@ -108,13 +102,6 @@
// 그리드 조회 시 사용된 마지막 검색조건 저장
var LAST_GRID_SEARCH_COND = {};
// 페이징 정보를 저장할 전역 변수
var GRID_PAGINATION_INFO = {
totalCount: 0,
page: 0,
perPage: 0
};
// 검색정보 설정
var setSearchCond = function() {
var schRcptYmdStart = $.trim(nvl($("#schRcptYmdStart").val(), ""));
@ -308,10 +295,10 @@
gridConfig.setOptUseClientSort(false);
// 페이징 옵션 설정
gridConfig.setOptPageOptions({
useClient: false,
perPage: perPage
});
//setOptPageOptionsgridConfig.setOptPageOptions({
// useClient: false,
// perPage: perPage
//});
gridConfig.setOptColumnOptions({ //컬럼고정 옵션
frozenCount: 5 //고정컬럼 갯수
@ -337,16 +324,13 @@
width: 60,
sortable: false,
formatter: function(e) {
var totalCount = GRID_PAGINATION_INFO.totalCount;
var page = GRID_PAGINATION_INFO.page;
var perPage = GRID_PAGINATION_INFO.perPage;
var rowIndex = e.row.rowKey;
return totalCount - (page - 1) * perPage - rowIndex;
return e.row.rowKey + 1;
}
},
{ header: '접수일자', name: 'rcptYmd', align: 'center', width: 100,
formatter: function(e) {
return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
//return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
return e.value;
}
},
{ header: '프로그램ID', name: 'prgrmId', align: 'center', width: 100 },
@ -359,12 +343,14 @@
{ header: '검사유효기간', name: 'inspVldPrd', align: 'center', width: 200 },
{ header: 'API 호출 부과일자', name: 'levyCrtrYmd', align: 'center', width: 100,
formatter: function(e) {
return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
//return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
return e.value;
}
},
{ header: '업무처리일자', name: 'taskPrcsYmd', align: 'center', width: 100,
formatter: function(e) {
return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
//return e.value ? moment(e.value, 'YYYYMMDD').format('YYYY-MM-DD') : '';
return e.value;
}
},
{
@ -531,15 +517,10 @@
this.instance.on('successResponse', function(ev) {
var responseObj = JSON.parse(ev.xhr.response);
if(responseObj){
$("#currentPage").text(responseObj.data.pagination.page);
$("#totalPages").text(responseObj.data.pagination.totalPages);
var totalCount = responseObj.data.pagination.totalCount;
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
// 페이징 정보를 전역 변수에 저장
GRID_PAGINATION_INFO.totalCount = responseObj.data.pagination.totalCount;
GRID_PAGINATION_INFO.page = responseObj.data.pagination.page;
GRID_PAGINATION_INFO.perPage = responseObj.data.pagination.perPage;
if( responseObj.data && responseObj.data.contents ){
var totalCount = responseObj.data.contents.length;
$("#totalCount").text('총 ' + totalCount.toLocaleString() + '건');
}
}
// 선택된 행 초기화
@ -587,11 +568,8 @@
// 취소 확인
if (confirm('모든 변경사항을 취소하시겠습니까?')) {
// 현재 페이지 저장
var currentPage = this.instance.getPagination().getCurrentPage();
// 그리드 데이터를 다시 로드하여 모든 변경사항 취소
this.instance.readData(currentPage);
this.instance.readData(1);
}
},
@ -666,7 +644,7 @@
// 초기화 버튼 클릭
$("#reset_btn").on('click', function() {
$("#schRcptYmdStart").val("${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -15)}");
$("#schRcptYmdStart").val("${dateUtil:getCurrentDateAddDays('yyyy-MM-dd', -10)}");
$("#schRcptYmdEnd").val("${dateUtil:getCurrentDateTime('yyyy-MM-dd')}");
$("#schVhclno").val("");
$("#schOwnrNm").val("");

Loading…
Cancel
Save