이행강제금 계산식 조치,미조치,조치완료에 따른 면적 계산방법 로직 추가

dev
박성영 3 months ago
parent 1f143e8fba
commit 067ac1c661

@ -48,8 +48,9 @@ public class LevyPrvntcActInfoVO extends PagingVO {
private BigDecimal usgIdx; //용도지수
private String usgIdxCdNm; //용도지수명
private BigDecimal area; //면적
private String actnLastYmd; // 조치 일자
private BigDecimal actnWholArea; // 조치 면적
private String actnLastYmd; // 최종 조치 일자
private BigDecimal actnWholArea; // 최종 조치 면적
private String actnPrcsSttsCd; // 조치 상태
private BigDecimal calcArea; // 면적 - 조치면적
private String no; //건물 신축 가격 기준액 NO

@ -52,15 +52,21 @@ public class CrdnLevyPrvntcServiceImpl extends EgovAbstractServiceImpl implement
// 2. 각 행위정보에 대해 계산 수행
for (LevyPrvntcActInfoVO actInfo : actInfoList) {
// null일 경우 0으로 처리하여 NullPointerException 방지
BigDecimal area = (actInfo.getArea() != null) ? actInfo.getArea() : BigDecimal.ZERO;
BigDecimal actnArea = (actInfo.getActnWholArea() != null) ? actInfo.getActnWholArea() : BigDecimal.ZERO;
// 3. 면적 - 조치면적 계산
BigDecimal calcArea = area.subtract(actnArea);
//미조치 및, 부분조치일경우에는 계산, 조치완료일경우에는 계산하지 않고 위반면적을 0 으로 처리
if(actInfo.getActnPrcsSttsCd() != null && !"3".equals(actInfo.getActnPrcsSttsCd())){
// null일 경우 0으로 처리하여 NullPointerException 방지
BigDecimal area = (actInfo.getArea() != null) ? actInfo.getArea() : BigDecimal.ZERO;
BigDecimal actnArea = (actInfo.getActnWholArea() != null) ? actInfo.getActnWholArea() : BigDecimal.ZERO;
// 4. 계산된 값을 소수점 둘째자리까지 설정하여 VO에 저장
actInfo.setCalcArea(calcArea.setScale(2, java.math.RoundingMode.HALF_UP));
// 3. 면적 - 조치면적 계산
BigDecimal calcArea = area.subtract(actnArea);
// 4. 계산된 값을 소수점 둘째자리까지 설정하여 VO에 저장
actInfo.setCalcArea(calcArea.setScale(2, java.math.RoundingMode.HALF_UP));
}else{
actInfo.setCalcArea(BigDecimal.ZERO);
}
}
return actInfoList;

@ -218,7 +218,7 @@
// 닫기 버튼 클릭 이벤트
$('#btnClose, #btnCloseTop').on('click', function() {
window.close();
closePopup();
});
// 가로, 세로 입력 시 면적 자동 계산
@ -241,6 +241,16 @@
});
function closePopup(){
if (window.opener && !window.opener.closed) {
if (typeof window.opener.CrdnDetailViewActInfo.search === 'function') {
window.opener.CrdnDetailViewActInfo.search();
}
window.opener.focus();
}
window.close();
}
/**
* 탭 전환 함수
* 중요한 로직 주석: levyPrvntcPopup.jsp와 동일한 방식으로 별도 팝업을 열어 탭을 전환합니다.
@ -618,8 +628,8 @@
if (window.opener && window.opener.CrdnDetailView && window.opener.CrdnDetailView.grids.actInfo) {
window.opener.CrdnDetailView.grids.actInfo.search();
}
window.close();
closePopup();
} else {
alert(response.message || actionText + ' 중 오류가 발생했습니다.');
}

@ -291,7 +291,7 @@
<!-- 산출조사서 영역 -->
<div class="box_column mt-20">
<ul class="box_title">
<li class="tit">이행강제금 산출조사서</li>
<li id="calcDIV" class="tit">이행강제금 산출조사서</li>
</ul>
<div id="dynamicViewer">
@ -564,7 +564,7 @@
{ header: '이행법', name: 'impltLaw1', align: 'center', width: 130, hidden: true},
{header: '위치정보ID', name: 'pstnInfoId', align: 'center', width: 60, hidden: true},
{header: '지목', name: 'ldcgCd', align: 'center', width: 60, hidden: true},
{header: '지목명', name: 'ldcgCdNm', align: 'center', width: 130},
{header: '지목명', name: 'ldcgCdNm', align: 'center', width: 130, hidden: true},
{header: '지적', name: 'ptout', align: 'right', width: 100, formatter: function(e){ return e.value != null ? Number(e.value).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : ''; } },
{header: '공시지가', name: 'oalp', align: 'right', width: 140, formatter: function(e){ return e.value != null ? Number(e.value).toLocaleString() : ''; } },
{ header: '면적', name: 'area', align: 'right', width: 100, formatter: function(e){
@ -842,6 +842,12 @@
LevyPrvntcPopup.levyInfoIdSelect = existingData.levyInfoId;
// 중요로직: 기존 데이터 로드 시 제목에 등록일 표시
if (existingData.regDt) {
var regDate = existingData.regDt.substring(0, 10); // YYYY-MM-DD 형식으로 자르기
$('#calcDIV').text('이행강제금 산출조사서 [등록일 : ' + regDate + ']');
}
// 건축물과세시가
$('#taxableMarketPrice').val(existingData.bdstTxtnMprc || '').trigger('focus');
@ -888,7 +894,8 @@
$('#standardMarketPrice_bottom').val(existingData.mprcStdAmt || '').trigger('focus');
// 위반면적 설정
$('#vltnArea').val(existingData.vltnArea || '').trigger('focus');
console.log(existingData.vltnArea);
$('#vltnArea').val(existingData.vltnArea || '0').trigger('focus');
// 가감산 정보
$('#adtnRtCd').val(existingData.adtnRtCd || ''); // 가산율 코드 설정
@ -928,8 +935,8 @@
$('#cmpttnRt2Rate').val(existingData.cmpttnRt2Rate || ''); // 계산용 비율값
// 산정액 및 부과총액
$('#cmpttnAmt').val(existingData.cmpttnAmt || '').trigger('focus'); // 산정액 값 설정
$('#levyWholAmt').val(existingData.levyWholAmt || ''); // 부과총액 값 설정
$('#cmpttnAmt').val(existingData.cmpttnAmt || '0').trigger('focus'); // 산정액 값 설정
$('#levyWholAmt').val(existingData.levyWholAmt || '0'); // 부과총액 값 설정
$('#levyWholAmtDisplay').text((existingData.levyWholAmt ? Number(existingData.levyWholAmt).toLocaleString() : '0') + ' 원');
// 기존 데이터 로딩 시 계산하기 버튼 숨김 (이미 계산된 결과가 있으므로)
@ -945,6 +952,9 @@
* @param {Object} rowData - 선택된 행의 데이터
*/
var setActInfoToForm = function(rowData) {
// 중요로직: 신규 등록 모드로 전환 시 제목을 원래대로 복원
$('#calcDIV').text('이행강제금 산출조사서');
var vltnArea = rowData.calcArea; // 면적 - 조치면적 : 위반면적
$('#bldgNewPrcCrtrAmtNo').val(rowData.bldgNewPrcCrtrAmtNo); // 건물기준시가액(NO)

@ -51,6 +51,12 @@
*/
getGridColumns: function() {
return [
{
header: '조치처리상태',
name: 'actnPrcsSttsCdNm',
align: 'center',
width: 80
},
{
header: '행위시작일자',
name: 'actBgngYmd',
@ -153,15 +159,6 @@
formatter: function(e) {
return e.value ? Number(e.value).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : '0.00';
}
},
{
header: '조치처리상태',
name: 'actnPrcsSttsCdNm',
align: 'center',
width: 100,
formatter: function(e) {
return e.value || '미조치';
}
}
];
},

Loading…
Cancel
Save