가감산시행령률 계산
parent
81bf42dc64
commit
e8c4e35145
@ -0,0 +1,16 @@
|
||||
create table tb_adsbmtn_rt
|
||||
(
|
||||
ADSBMTN_RT_CD varchar(5) not null comment '가감산 율 코드'
|
||||
primary key,
|
||||
ADSBMTN_RT_SE_CD varchar(1) null comment '가감산 율 구분 코드',
|
||||
ADSBMTN_RT_APLCN_TRGT varchar(100) null comment '가감산 율 적용 대상',
|
||||
ADSBMTN_RT_APLCN_TRGT_DTL varchar(100) null comment '가감산 율 적용 대상 상세',
|
||||
ADSBMTN_RT decimal(3) null comment '가감산 율',
|
||||
USE_YN char not null comment '사용 여부',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
MDFCN_DT datetime null comment '수정 일시',
|
||||
MDFR varchar(11) null comment '수정자'
|
||||
)
|
||||
comment '가감산 율';
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
create table tb_levy_info
|
||||
(
|
||||
LEVY_INFO_ID varchar(10) not null comment '부과 정보 ID'
|
||||
primary key,
|
||||
SGG_CD varchar(5) not null comment '시군구 코드',
|
||||
CRDN_YR char(4) null comment '단속 연도',
|
||||
CRDN_NO varchar(6) null comment '단속 번호',
|
||||
IMPLT_INFO_ID varchar(10) not null comment '이행 정보 ID',
|
||||
ACT_NO varchar(2) null comment '행위 번호',
|
||||
DOC_NO varchar(100) null comment '문서 번호',
|
||||
IMPLT_CPSR_AMT decimal(13) null comment '이행 강제 금액',
|
||||
MPRC_STD_AMT decimal(13) null comment '시가 표준 액',
|
||||
VLTN_AREA decimal(10, 2) null comment '위반 면적',
|
||||
ADTN_RT_CD varchar(5) null comment '가산 율 코드',
|
||||
ADTN_RT decimal(3) null comment '가산 율',
|
||||
SBTR_RT_CD varchar(5) null comment '감산 율 코드',
|
||||
SBTR_RT decimal(3) null comment '감산 율',
|
||||
ADSBMTN_ENFC_RT decimal(3) null comment '가감산 시행 률',
|
||||
CMPTTN_RT_CD varchar(3) null comment '산정 률 코드',
|
||||
CMPTTN_RT decimal(3) null comment '산정 률',
|
||||
CMPTTN_RT_2_CD varchar(1) null comment '산정 률 2 코드',
|
||||
CMPTTN_RT_2 decimal(3) null comment '산정 률 2',
|
||||
CMPTTN_AMT decimal(13) null comment '산정 액',
|
||||
LEVY_WHOL_AMT decimal(13) null comment '부과 총 액',
|
||||
BLDG_CRTR_MPRC_AMT decimal(13) null comment '건물 기준 시가 액',
|
||||
STRCT_IDX_CD varchar(3) null comment '구조 지수 코드',
|
||||
STRCT_IDX decimal(10, 2) null comment '구조 지수',
|
||||
USG_IDX_CD varchar(5) null comment '용도 지수 코드',
|
||||
USG_IDX decimal(10, 2) null comment '용도 지수',
|
||||
PSTN_IDX_CD varchar(2) null comment '위치 지수 코드',
|
||||
PSTN_IDX decimal(10, 2) null comment '위치 지수',
|
||||
ELPS_YR_RDVLRT decimal(10, 2) null comment '경과 연도 잔가율',
|
||||
BSCS_CSTRN_SE_CD varchar(1) null comment '기초 공사 구분 코드',
|
||||
BSCS_CSTRN_RT decimal(10, 2) null comment '기초 공사 율',
|
||||
BDST_TXTN_MPRC decimal(13) null comment '건축물 과세 시가',
|
||||
REG_DT datetime null comment '등록 일시',
|
||||
RGTR varchar(11) null comment '등록자',
|
||||
MDFCN_DT datetime null comment '수정 일시',
|
||||
MDFR varchar(11) null comment '수정자',
|
||||
DEL_YN char not null comment '삭제 여부',
|
||||
DEL_DT datetime null comment '삭제 일시',
|
||||
DLTR varchar(11) null comment '삭제자'
|
||||
)
|
||||
comment '부과 정보';
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
package go.kr.project.crdn.crndRegistAndView.main.model;
|
||||
|
||||
import go.kr.project.common.model.PagingVO;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@EqualsAndHashCode(callSuper=true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class AdsbmtnRtVO extends PagingVO {
|
||||
|
||||
/**
|
||||
* 가감산 율 코드
|
||||
*/
|
||||
private String adsbmtnRtCd;
|
||||
|
||||
/**
|
||||
* 가감산 율 구분 코드
|
||||
*/
|
||||
private String adsbmtnRtSeCd;
|
||||
|
||||
/**
|
||||
* 가감산 율 구분 코드 명
|
||||
*/
|
||||
private String adsbmtnRtSeCdNm;
|
||||
|
||||
/**
|
||||
* 가감산 율 적용 대상
|
||||
*/
|
||||
private String adsbmtnRtAplcnTrgt;
|
||||
|
||||
/**
|
||||
* 가감산 율 적용 대상 상세
|
||||
*/
|
||||
private String adsbmtnRtAplcnTrgtDtl;
|
||||
|
||||
/**
|
||||
* 가감산 율
|
||||
*/
|
||||
private BigDecimal adsbmtnRt;
|
||||
|
||||
/**
|
||||
* 가감산 율(계산식에 사용될 값)
|
||||
*/
|
||||
private BigDecimal adsbmtnRtRate;
|
||||
|
||||
/**
|
||||
* 사용 여부
|
||||
*/
|
||||
private String useYn;
|
||||
|
||||
/**
|
||||
* adsbmtnRt 값을 설정할 때, 100으로 나눈 비율 값을 adsbmtnRtRate 자동으로 설정합니다.
|
||||
* @param adsbmtnRt 원본 비율 값 (예: 90, 70)
|
||||
*/
|
||||
public void setAdsbmtnRt(BigDecimal adsbmtnRt) {
|
||||
this.adsbmtnRt = adsbmtnRt;
|
||||
|
||||
if (adsbmtnRt != null) {
|
||||
// 100으로 나누고, 소수점 2자리까지 반올림하여 설정
|
||||
this.adsbmtnRtRate = adsbmtnRt.divide(new BigDecimal("100"), 2, java.math.RoundingMode.HALF_UP);
|
||||
} else {
|
||||
this.adsbmtnRtRate = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,151 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
|
||||
<!-- 가감산 팝업 -->
|
||||
<div class="popup_wrap">
|
||||
<div class="popup_inner">
|
||||
<div class="popup_tit">
|
||||
<h2 class="tit">${typeNm} 항목 선택</h2>
|
||||
<a href="#" class="pop-x-btn modalclose"></a>
|
||||
</div>
|
||||
|
||||
<div class="popup_con">
|
||||
<div class="box_column">
|
||||
<div class="containers">
|
||||
<div id="grid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="popup_foot">
|
||||
<button type="button" id="btnSelect" class="newbtns bg1">선택</button>
|
||||
<button type="button" class="newbtns bg2 modalclose">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var LevyAddMinusPopup = {
|
||||
type: '${type}',
|
||||
checkedRowData: null,
|
||||
grid: {
|
||||
instance: null,
|
||||
|
||||
initConfig: function() {
|
||||
var dataSource = this.createDataSource();
|
||||
var gridConfig = new XitTuiGridConfig();
|
||||
|
||||
gridConfig.setOptDataSource(dataSource);
|
||||
gridConfig.setOptGridId('grid');
|
||||
gridConfig.setOptGridHeight(400);
|
||||
gridConfig.setOptRowHeight(30);
|
||||
gridConfig.setOptRowHeaderType('');
|
||||
gridConfig.setOptColumns(this.getGridColumns());
|
||||
|
||||
return gridConfig;
|
||||
},
|
||||
|
||||
getGridColumns: function() {
|
||||
return [
|
||||
{ header: '코드', name: 'adsbmtnRtCd', hidden: true },
|
||||
{ header: '구분', name: 'adsbmtnRtSeCdNm', align: 'center', width: 80 },
|
||||
{ header: '가감산율', name: 'adsbmtnRt', align: 'center', width: 100, sortable: true,
|
||||
formatter: function(e) {
|
||||
return e.value + '%';
|
||||
}
|
||||
},
|
||||
{ header: '가감산율(계산에 적용될값)', name: 'adsbmtnRtRate', align: 'center', width: 250, hidden: true},
|
||||
{ header: '적용 대상', name: 'adsbmtnRtAplcnTrgt', align: 'left', width: 300 },
|
||||
{ header: '적용 대상 상세', name: 'adsbmtnRtAplcnTrgtDtl', align: 'left', width: 400 },
|
||||
];
|
||||
},
|
||||
|
||||
createDataSource: function() {
|
||||
var self = this;
|
||||
return {
|
||||
api: {
|
||||
readData: {
|
||||
url: '<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/adsbmtnRtList.ajax"/>',
|
||||
method: 'POST'
|
||||
}
|
||||
},
|
||||
initialRequest: true,
|
||||
serializer: function(params) {
|
||||
var query = {};
|
||||
query.adsbmtnRtSeCd = (self.type === 'add') ? 'A' : 'M';
|
||||
return $.param(query);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
create: function() {
|
||||
var gridConfig = this.initConfig();
|
||||
this.instance = gridConfig.instance(tui.Grid);
|
||||
tui.Grid.applyTheme('striped');
|
||||
this.gridBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 이벤트 바인딩
|
||||
*/
|
||||
gridBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
this.instance.on('focusChange', function(ev) {
|
||||
if (ev.rowKey !== undefined && ev.rowKey !== null) {
|
||||
var rowData = self.instance.getRow(ev.rowKey);
|
||||
LevyAddMinusPopup.checkedRowData = rowData;
|
||||
}
|
||||
});
|
||||
|
||||
// 행 더블클릭 이벤트 - 중요로직: 수정모드로 팝업 호출
|
||||
this.instance.on('dblclick', function(ev) {
|
||||
var rowData = self.instance.getRow(ev.rowKey);
|
||||
LevyAddMinusPopup.checkedRowData = rowData;
|
||||
LevyAddMinusPopup.select();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
init: function() {
|
||||
this.grid.create();
|
||||
this.bindEvents();
|
||||
},
|
||||
|
||||
bindEvents: function() {
|
||||
var self = this;
|
||||
$('.modalclose').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
window.close();
|
||||
});
|
||||
|
||||
$('#btnSelect').on('click', function() {
|
||||
self.select();
|
||||
});
|
||||
},
|
||||
|
||||
select: function() {
|
||||
console.log(LevyAddMinusPopup.checkedRowData);
|
||||
if (!LevyAddMinusPopup.checkedRowData) {
|
||||
alert('항목을 선택해주세요.');
|
||||
return;
|
||||
}
|
||||
|
||||
if (window.opener && typeof window.opener.setAddMinusData === 'function') {
|
||||
window.opener.setAddMinusData(this.type, LevyAddMinusPopup.checkedRowData);
|
||||
}
|
||||
window.close();
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
LevyAddMinusPopup.init();
|
||||
});
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
Loading…
Reference in New Issue