### Commit 메시지

#### feat: 조사일자 및 적발방법 개선
- **조사일자**로 필드명 변경: VO, MyBatis Mapper, JSP 포함 전역 수정
- UI에서 적발방법과 지역구분 필드 교체 및 관련 리스트 연동 로직 변경
- 진행단계 코드 없이도 모든 단계 검색 가능한 OR 조건 추가

#### fix: 일자 검색 관련 쿼리 정렬 문제 수정
- 쿼리 정렬 조건 수정: CRDN_YR을 DESC로 변경

#### refactor: 불필요한 필드와 주석 정리
- 사용되지 않는 필드, 주석 제거 및 중복 코드 주석 처리

#### style: 주소 입력 필드 순서 조정
- JSP에서 상세주소 입력 필드 위치 조정, 가독성 및 UI 일관성 개선
dev
박성영 1 month ago
parent 1067bc9af0
commit a98b8efb89

@ -87,7 +87,7 @@ public class CrdnImpltTaskVO extends PagingVO {
private String mode;
/** 단속 정보 (조인용) */
private String dsclYmd; // 적발일자
private String dsclYmd; // 조사일자
private String exmnr; // 조사원
private String lotnoWholAddr; // 지번전체주소
private String lotnoAddr; // 지번주소

@ -35,8 +35,8 @@ public class CrdnRegistAndViewExcelVO {
@ExcelColumn(headerName = "세움터 관리번호", headerWidth = 20)
private String sewmtrMngNo;
/** 적발일자 */
@ExcelColumn(headerName = "적발일자", headerWidth = 15, align = ExcelColumn.Align.CENTER)
/** 조사일자 */
@ExcelColumn(headerName = "조사일자", headerWidth = 15, align = ExcelColumn.Align.CENTER)
private String dsclYmd;
/** 행위일자 (현재 DB에 없음 - 필요시 추가) */

@ -88,7 +88,7 @@ public class LevyNotiImpltInfoVO extends PagingVO {
private String mode;
/** 단속 정보 (조인용) */
private String dsclYmd; // 적발일자
private String dsclYmd; // 조사일자
private String exmnr; // 조사원
private String lotnoWholAddr; // 지번전체주소
private String lotnoAddr; // 지번주소

@ -87,7 +87,7 @@ public class NotiImpltInfoVO extends PagingVO {
private String mode;
/** 단속 정보 (조인용) */
private String dsclYmd; // 적발일자
private String dsclYmd; // 조사일자
private String exmnr; // 조사원
private String lotnoWholAddr; // 지번전체주소
private String lotnoAddr; // 지번주소

@ -119,9 +119,19 @@
<if test='schCrdnPrcsSttsCd != null and schCrdnPrcsSttsCd != ""'>
AND c.CRDN_PRCS_STTS_CD = #{schCrdnPrcsSttsCd}
</if>
<!-- 중요로직: 진행단계 코드에 따라 해당 일자 컬럼과 비교 -->
<!-- 중요로직: 진행단계 코드에 따라 해당 일자 컬럼과 비교, null/"" 일 경우 모든 단계 OR 조건 검색 -->
<if test='schPrcsSttsStartDt != null and schPrcsSttsStartDt != ""'>
<choose>
<when test='schCrdnPrcsSttsCd == null or schCrdnPrcsSttsCd == ""'>
AND (
c.DSPS_BFHD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.CRC_CMD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.CRC_URG_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.LEVY_PRVNTC_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.LEVY_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.PAY_URG_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
)
</when>
<when test='schCrdnPrcsSttsCd == "1"'>
AND c.DSPS_BFHD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
</when>
@ -144,6 +154,16 @@
</if>
<if test='schPrcsSttsEndDt != null and schPrcsSttsEndDt != ""'>
<choose>
<when test='schCrdnPrcsSttsCd == null or schCrdnPrcsSttsCd == ""'>
AND (
c.DSPS_BFHD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.CRC_CMD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.CRC_URG_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.LEVY_PRVNTC_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.LEVY_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.PAY_URG_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
)
</when>
<when test='schCrdnPrcsSttsCd == "1"'>
AND c.DSPS_BFHD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
</when>
@ -247,9 +267,19 @@
<if test='schCrdnPrcsSttsCd != null and schCrdnPrcsSttsCd != ""'>
AND c.CRDN_PRCS_STTS_CD = #{schCrdnPrcsSttsCd}
</if>
<!-- 중요로직: 진행단계 코드에 따라 해당 일자 컬럼과 비교 -->
<!-- 중요로직: 진행단계 코드에 따라 해당 일자 컬럼과 비교, null/"" 일 경우 모든 단계 OR 조건 검색 -->
<if test='schPrcsSttsStartDt != null and schPrcsSttsStartDt != ""'>
<choose>
<when test='schCrdnPrcsSttsCd == null or schCrdnPrcsSttsCd == ""'>
AND (
c.DSPS_BFHD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.CRC_CMD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.CRC_URG_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.LEVY_PRVNTC_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.LEVY_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
OR c.PAY_URG_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
)
</when>
<when test='schCrdnPrcsSttsCd == "1"'>
AND c.DSPS_BFHD_BGNG_YMD <![CDATA[>=]]> REPLACE(#{schPrcsSttsStartDt}, '-', '')
</when>
@ -272,6 +302,16 @@
</if>
<if test='schPrcsSttsEndDt != null and schPrcsSttsEndDt != ""'>
<choose>
<when test='schCrdnPrcsSttsCd == null or schCrdnPrcsSttsCd == ""'>
AND (
c.DSPS_BFHD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.CRC_CMD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.CRC_URG_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.LEVY_PRVNTC_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.LEVY_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
OR c.PAY_URG_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
)
</when>
<when test='schCrdnPrcsSttsCd == "1"'>
AND c.DSPS_BFHD_END_YMD <![CDATA[<=]]> REPLACE(#{schPrcsSttsEndDt}, '-', '')
</when>
@ -479,12 +519,16 @@
<update id="update" parameterType="CrdnRegistAndViewVO">
/* CrdnRegistAndViewMapper.update : 단속 수정 */
UPDATE tb_crdn
SET RGN_SE_CD = #{rgnSeCd},
DSCL_MTHD_CD = #{dsclMthdCd},
SET DSCL_MTHD_CD = #{dsclMthdCd},
DSCL_YMD = REPLACE(#{dsclYmd}, '-', ''),
EXMNR = #{exmnr},
RMRK = #{rmrk},
<if test='rgnSeCd != null and rgnSeCd != "" '>
RGN_SE_CD = #{rgnSeCd},
</if>
<if test='relevyYn != null and relevyYn != "" '>
RELEVY_YN = #{relevyYn},
</if>
AGRVTN_LEVY_TRGT_YN = #{agrvtnLevyTrgtYn}
WHERE CRDN_YR = #{crdnYr}
AND CRDN_NO = #{crdnNo}

@ -110,7 +110,7 @@
or
(c.CRDN_YR = #{frstCrdnYr} AND c.CRDN_NO = #{frstCrdnNo})
)
ORDER BY c.CRDN_YR ASC, c.CRDN_NO ASC
ORDER BY c.CRDN_YR DESC, c.CRDN_NO ASC
</select>
</mapper>

@ -62,7 +62,7 @@
</td>
</tr>
<tr>
<th class="th"><span class="required">*</span> 적발일자</th>
<th class="th"><span class="required">*</span> 조사일자</th>
<td colspan="3">
<input type="text" id="dsclYmd" name="dsclYmd" class="input calender datepicker" validation-check="required" value="${dateUtil:formatDateString(data.dsclYmd)}" maxlength="10" style="width: 120px;" autocomplete="off" />
</td>

@ -39,7 +39,7 @@
<tr>
<th class="th">적발방법</th>
<td id="orgDsclMthdCdNm"></td>
<th class="th">적발일자</th>
<th class="th">조사일자</th>
<td id="orgDsclYmd"></td>
</tr>
<tr>

@ -129,12 +129,12 @@
getGridColumns: function() {
return [
{ header: '단속년도', name: 'crdnYr', align: 'center', width: 80 },
{ header: '단속번호', name: 'crdnNo', align: 'center', width: 90 },
/*{ header: '단속번호', name: 'crdnNo', align: 'center', width: 90 },
{ header: '법정동', name: 'stdgEmdCdNm', align: 'center', width: 90 },
{ header: '지역구분', name: 'rgnSeCdNm', align: 'center', width: 100 },
{ header: '적발방법', name: 'dsclMthdCdNm', align: 'center', width: 120 },
{
header: '적발일자',
header: '조사일자',
name: 'dsclYmd',
align: 'center',
width: 100,
@ -142,7 +142,7 @@
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{ header: '조사원', name: 'exmnr', align: 'left', width: 130 },
{ header: '조사원', name: 'exmnr', align: 'left', width: 130 },*/
{
header: '재부과여부',
name: 'relevyYn',
@ -153,7 +153,7 @@
}
},
{ header: '진행단계', name: 'crdnPrcsSttsCdNm', align: 'center', width: 100 },
{
/*{
header: '위치',
name: 'lotnoWholAddr',
align: 'left',
@ -161,7 +161,7 @@
formatter: function(e) {
return e.value;
}
},
},*/
{ header: '처분사전 일자', name: 'dspsBfhdBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';

@ -36,27 +36,27 @@
<td>
<input type="text" id="dispCrdnNo" name="dispCrdnNo" class="input" value="${crdnNo}" readonly style="width: 120px;"/>
</td>
<th class="th"><span class="required">*</span> 지역구분</th>
<th class="th"><span class="required">*</span> 적발방법</th>
<td>
<select id="rgnSeCd" name="rgnSeCd" class="input" validation-check="required">
<select id="dsclMthdCd" name="dsclMthdCd" class="input" validation-check="required">
<option value="">선택하세요</option>
<c:forEach var="code" items="${regionList}">
<c:forEach var="code" items="${dsclMthdCdList}">
<option value="${code.cdId}">${code.cdNm}</option>
</c:forEach>
</select>
</td>
<th class="th"><span class="required">*</span> 적발방법</th>
<%--<th class="th"><span class="required">*</span> 지역구분</th>
<td>
<select id="dsclMthdCd" name="dsclMthdCd" class="input" validation-check="required">
<select id="rgnSeCd" name="rgnSeCd" class="input" validation-check="required">
<option value="">선택하세요</option>
<c:forEach var="code" items="${dsclMthdCdList}">
<c:forEach var="code" items="${regionList}">
<option value="${code.cdId}">${code.cdNm}</option>
</c:forEach>
</select>
</td>
</td>--%>
</tr>
<tr>
<th class="th"><span class="required">*</span> 적발일자</th>
<th class="th"><span class="required">*</span> 조사일자</th>
<td>
<input type="text" id="dsclYmd" name="dsclYmd" class="input calender datepicker" maxlength="10" style="width: 120px;" autocomplete="off" validation-check="required"/>
</td>
@ -65,14 +65,6 @@
<input type="text" id="exmnr" name="exmnr" class="input" maxlength="100" style="width: 80%;"/>
<button type="button" id="btnExmnrSelect" class="newbtn bg1" style="margin-left: 5px;">조사원 선택</button>
</td>
<th class="th"><span class="required">*</span> 재부과여부</th>
<td>
<select id="relevyYn" name="relevyYn" class="input" validation-check="required">
<option value="">선택하세요</option>
<option value="N">신규</option>
<option value="Y">재부과</option>
</select>
</td>
<th class="th"><span class="required">*</span> 가중부과대상</th>
<td>
<select id="agrvtnLevyTrgtYn" name="agrvtnLevyTrgtYn" class="input" validation-check="required">
@ -81,6 +73,14 @@
<option value="Y">대상</option>
</select>
</td>
<%--<th class="th"><span class="required">*</span> 재부과여부</th>
<td>
<select id="relevyYn" name="relevyYn" class="input" validation-check="required">
<option value="">선택하세요</option>
<option value="N">신규</option>
<option value="Y">재부과</option>
</select>
</td>--%>
</tr>
<tr>
<th class="th">비고</th>

@ -102,9 +102,9 @@
<li>
<input type="text" id="schZip" name="schZip" class="input" style="width: 80px;" maxlength="6" autocomplete="off" placeholder="우편번호"/>
<input type="text" id="schLotnoAddr" name="schLotnoAddr" class="input" style="width: 200px;" maxlength="400" autocomplete="off" placeholder="지번주소"/>
<input type="text" id="schDtlAddr" name="schDtlAddr" class="input" style="width: 150px;" maxlength="380" autocomplete="off" placeholder="상세주소"/>
<input type="text" id="schLotnoMno" name="schLotnoMno" class="input" style="width: 60px;" maxlength="4" autocomplete="off" placeholder="본번"/>
<input type="text" id="schLotnoSno" name="schLotnoSno" class="input" style="width: 60px;" maxlength="4" autocomplete="off" placeholder="부번"/>
<input type="text" id="schDtlAddr" name="schDtlAddr" class="input" style="width: 150px;" maxlength="380" autocomplete="off" placeholder="상세주소"/>
<button class="newbtnss bg1" type="button" id="btnAddrSearch">주소 찾기</button>
</li>
</ul>
@ -295,7 +295,7 @@
{ header: '지역구분', name: 'rgnSeCdNm', align: 'center', width: 100 },
{ header: '적발방법', name: 'dsclMthdCdNm', align: 'center', width: 120 },
{
header: '적발일자',
header: '조사일자',
name: 'dsclYmd',
align: 'center',
width: 100,

@ -252,7 +252,7 @@
width: 120
},
{
header: '적발일자',
header: '조사일자',
name: 'dsclYmd',
align: 'center',
width: 100,

@ -264,7 +264,7 @@
{ header: '지역구분', name: 'rgnSeCdNm', align: 'center', width: 100 },
{ header: '적발방법', name: 'dsclMthdCdNm', align: 'center', width: 120 },
{
header: '적발일자',
header: '조사일자',
name: 'dsclYmd',
align: 'center',
width: 100,
@ -570,7 +570,7 @@
{ header: '지역구분', name: 'rgnSeCdNm', align: 'center', width: 100 },
{ header: '적발방법', name: 'dsclMthdCdNm', align: 'center', width: 120 },
{
header: '적발일자',
header: '조사일자',
name: 'dsclYmd',
align: 'center',
width: 100,

@ -37,7 +37,7 @@
<tr>
<th class="th">적발방법</th>
<td id="firstDsclMthdCdNm"></td>
<th class="th">적발일자</th>
<th class="th">조사일자</th>
<td id="firstDsclYmd"></td>
</tr>
<tr>

Loading…
Cancel
Save