부과예고 CU 구분 체크 및 소스 정리, 이행정보는 다른 탭에서 진행 될 예정

dev
박성영 3 months ago
parent a579f61626
commit 55c481fd92

@ -5,8 +5,9 @@ create table tb_levy_info
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 '행위 번호',
IMPLT_INFO_ID varchar(10) null comment '이행 정보 ID',
IMPLT_TASK_SE_CD varchar(2) null comment '이행 업무 구분 코드',
ACT_INFO_ID varchar(10) not null comment '행위 정보 ID',
DOC_NO varchar(100) null comment '문서 번호',
IMPLT_CPSR_AMT decimal(13) null comment '이행 강제 금액',
MPRC_STD_AMT decimal(13) null comment '시가 표준 액',

@ -4,7 +4,6 @@ import egovframework.constant.ImpltTaskSeConstants;
import egovframework.constant.TilesConstants;
import egovframework.exception.MessageException;
import egovframework.util.ApiResponseUtil;
import egovframework.util.SessionUtil;
import go.kr.project.common.service.CommonCodeService;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.service.CrdnActInfoService;
@ -53,7 +52,7 @@ import java.util.Map;
@Tag(name = "부과예고 등록/조회", description = "부과예고 등록/조회 관련 API")
public class CrdnLevyPrvntcController {
/* 이행정보 서비스 */
/* 부과정보 서비스 */
private final CrdnImpltTaskService crdnImpltTaskService;
/* 단속 서비스 */
@ -72,6 +71,64 @@ public class CrdnLevyPrvntcController {
private final CommonCodeService commonCodeService;
/**
* .
*
* @param crdnYr
* @param crdnNo
* @param impltTaskSeCd
* @return
*/
@GetMapping("/selectLevyInfoFirstCheck.ajax")
@Operation(summary = "부과정보 조회", description = "부과정보를 조회합니다.")
public ResponseEntity<?> selectLevyInfoFirstCheck(
@Parameter(description = "단속 연도") @RequestParam String crdnYr,
@Parameter(description = "단속 번호") @RequestParam String crdnNo,
@Parameter(description = "이행업무구분코드") @RequestParam String impltTaskSeCd) {
log.debug("부과정보 조회 요청 - 단속연도: {}, 단속번호: {}, 이행업무구분코드: {}", crdnYr, crdnNo, impltTaskSeCd);
// 단속정보
CrdnRegistAndViewVO crdnParamVO = new CrdnRegistAndViewVO();
crdnParamVO.setCrdnYr(crdnYr);
crdnParamVO.setCrdnNo(crdnNo);
CrdnRegistAndViewVO crdnData = crdnRegistAndViewService.selectOne(crdnParamVO);
if( crdnData == null ){
throw new MessageException("단속정보를 찾을 수 없습니다.");
}
// 위치정보
CrdnPstnInfoVO pstnParamVO = new CrdnPstnInfoVO();
pstnParamVO.setCrdnYr(crdnYr);
pstnParamVO.setCrdnNo(crdnNo);
CrdnPstnInfoVO pstnData = crdnPstnInfoService.selectPstnOne(pstnParamVO);
if( pstnData == null ){
throw new MessageException("위치정보를 찾을 수 없습니다. 위치정보 등록 후 "+ImpltTaskSeConstants.getImpltTaskSeCdNm(impltTaskSeCd)+" 등록이 가능합니다.");
}
// 행위정보
CrdnActInfoVO actInfoParamVO = new CrdnActInfoVO();
actInfoParamVO.setCrdnYr(crdnYr);
actInfoParamVO.setCrdnNo(crdnNo);
actInfoParamVO.setPstnInfoId(pstnData.getPstnInfoId());
int actInfoDataCnt = crdnActInfoService.selectActInfoListTotalCount(actInfoParamVO);
if( actInfoDataCnt == 0 ){
throw new MessageException("행위정보를 찾을 수 없습니다. 행위정보 등록 후 "+ImpltTaskSeConstants.getImpltTaskSeCdNm(impltTaskSeCd)+" 등록이 가능합니다.");
}
CrdnLevyInfoVO paramVO = new CrdnLevyInfoVO();
paramVO.setCrdnYr(crdnYr);
paramVO.setCrdnNo(crdnNo);
paramVO.setImpltTaskSeCd(impltTaskSeCd);
int cnt = crdnLevyPrvntcService.selectLevyInfoFirstCheck(paramVO);
if (cnt > 0) {
return ApiResponseUtil.success(cnt, "부과정보 조회가 완료되었습니다.");
} else {
return ApiResponseUtil.success(0, "등록된 부과정보가 없습니다.");
}
}
/**
* .
*
@ -131,7 +188,7 @@ public class CrdnLevyPrvntcController {
}
mav.addObject("pstnData", pstnData);
// 수정/보기 모드인 경우 기존 이행정보 조회
// 수정/보기 모드인 경우 기존 부과정보 조회
if ("U".equals(mode) || "V".equals(mode)) {
CrdnImpltTaskVO searchVO = new CrdnImpltTaskVO();
searchVO.setCrdnYr(crdnYr);
@ -267,9 +324,9 @@ public class CrdnLevyPrvntcController {
@ApiResponse(responseCode = "500", description = "서버 오류")
})
@PostMapping("/adsbmtnRtList.ajax")
public ResponseEntity<?> adsbmtnRtListAjax(@ModelAttribute AdsbmtnRtVO vo) {
public ResponseEntity<?> adsbmtnRtListAjax(@ModelAttribute CrdnAdsbmtnRtVO vo) {
List<AdsbmtnRtVO> list = crdnLevyPrvntcService.selectAdsbmtnRtList(vo);
List<CrdnAdsbmtnRtVO> list = crdnLevyPrvntcService.selectAdsbmtnRtList(vo);
// 1. 총 개수 조회
int totalCount = list.size();

@ -1,7 +1,8 @@
package go.kr.project.crdn.crndRegistAndView.main.mapper;
import go.kr.project.crdn.crndRegistAndView.main.model.AdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnAdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnCmpttnRt2VO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnLevyInfoVO;
import go.kr.project.crdn.crndRegistAndView.main.model.LevyPrvntcActInfoVO;
import org.apache.ibatis.annotations.Mapper;
@ -22,10 +23,12 @@ import java.util.List;
@Mapper
public interface CrdnLevyPrvntcMapper {
int selectLevyInfoFirstCheck(CrdnLevyInfoVO vo);
List<LevyPrvntcActInfoVO> selectActInfoList(LevyPrvntcActInfoVO vo);
List<CrdnCmpttnRt2VO> getAllCmpttnRt2(CrdnCmpttnRt2VO vo);
List<AdsbmtnRtVO> selectAdsbmtnRtList(AdsbmtnRtVO vo);
List<CrdnAdsbmtnRtVO> selectAdsbmtnRtList(CrdnAdsbmtnRtVO vo);
}

@ -11,7 +11,7 @@ import java.math.BigDecimal;
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class AdsbmtnRtVO extends PagingVO {
public class CrdnAdsbmtnRtVO extends PagingVO {
/**
*

@ -0,0 +1,80 @@
package go.kr.project.crdn.crndRegistAndView.main.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import go.kr.project.common.model.PagingVO;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper=true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class CrdnLevyInfoVO extends PagingVO {
private String levyInfoId;
private String sggCd;
private String crdnYr;
private String crdnNo;
private String impltInfoId;
private String impltTaskSeCd;
private String actInfoId;
private String docNo;
private BigDecimal impltCpsrAmt;
private BigDecimal mprcStdAmt;
private BigDecimal vltnArea;
private String adtnRtCd;
private BigDecimal adtnRt;
private String sbtrRtCd;
private BigDecimal sbtrRt;
private BigDecimal adsbmtnEnfcRt;
private String cmpttnRtCd;
private BigDecimal cmpttnRt;
private String cmpttnRt2Cd;
private BigDecimal cmpttnRt2;
private BigDecimal cmpttnAmt;
private BigDecimal levyWholAmt;
private BigDecimal bldgCrtrMprcAmt;
private String strctIdxCd;
private BigDecimal strctIdx;
private String usgIdxCd;
private BigDecimal usgIdx;
private String pstnIdxCd;
private BigDecimal pstnIdx;
private BigDecimal elpsYrRdvlrt;
private String bscsCstrnSeCd;
private BigDecimal bscsCstrnRt;
private BigDecimal bdstTxtnMprc;
/** 등록 일시 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
private LocalDateTime regDt;
/** 등록자 */
private String rgtr;
/** 수정 일시 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
private LocalDateTime mdfcnDt;
/** 수정자 */
private String mdfr;
/** 삭제 여부 */
private String delYn;
/** 삭제 일시 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
private LocalDateTime delDt;
/** 삭제자 */
private String dltr;
}

@ -1,7 +1,8 @@
package go.kr.project.crdn.crndRegistAndView.main.service;
import go.kr.project.crdn.crndRegistAndView.main.model.AdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnAdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnCmpttnRt2VO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnLevyInfoVO;
import go.kr.project.crdn.crndRegistAndView.main.model.LevyPrvntcActInfoVO;
import java.util.List;
@ -20,6 +21,8 @@ import java.util.List;
*/
public interface CrdnLevyPrvntcService {
int selectLevyInfoFirstCheck(CrdnLevyInfoVO vo);
/**
*
* */
@ -27,6 +30,6 @@ public interface CrdnLevyPrvntcService {
List<CrdnCmpttnRt2VO> getAllCmpttnRt2(CrdnCmpttnRt2VO vo);
List<AdsbmtnRtVO> selectAdsbmtnRtList(AdsbmtnRtVO vo);
List<CrdnAdsbmtnRtVO> selectAdsbmtnRtList(CrdnAdsbmtnRtVO vo);
}

@ -1,8 +1,9 @@
package go.kr.project.crdn.crndRegistAndView.main.service.impl;
import go.kr.project.crdn.crndRegistAndView.main.mapper.CrdnLevyPrvntcMapper;
import go.kr.project.crdn.crndRegistAndView.main.model.AdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnAdsbmtnRtVO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnCmpttnRt2VO;
import go.kr.project.crdn.crndRegistAndView.main.model.CrdnLevyInfoVO;
import go.kr.project.crdn.crndRegistAndView.main.model.LevyPrvntcActInfoVO;
import go.kr.project.crdn.crndRegistAndView.main.service.CrdnLevyPrvntcService;
import lombok.RequiredArgsConstructor;
@ -32,6 +33,11 @@ public class CrdnLevyPrvntcServiceImpl extends EgovAbstractServiceImpl implement
private final CrdnLevyPrvntcMapper crdnLevyPrvntcMapper;
@Override
public int selectLevyInfoFirstCheck(CrdnLevyInfoVO vo){
return crdnLevyPrvntcMapper.selectLevyInfoFirstCheck(vo);
}
/**
*
* */
@ -65,7 +71,7 @@ public class CrdnLevyPrvntcServiceImpl extends EgovAbstractServiceImpl implement
}
@Override
public List<AdsbmtnRtVO> selectAdsbmtnRtList(AdsbmtnRtVO vo) {
public List<CrdnAdsbmtnRtVO> selectAdsbmtnRtList(CrdnAdsbmtnRtVO vo) {
return crdnLevyPrvntcMapper.selectAdsbmtnRtList(vo);
}

@ -2,6 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="go.kr.project.crdn.crndRegistAndView.main.mapper.CrdnLevyPrvntcMapper">
<select id="selectLevyInfoFirstCheck" parameterType="CrdnLevyInfoVO" resultType="int">
select count(*) as cnt
from tb_levy_info
where CRDN_YR = #{crdnYr}
and CRDN_NO = #{crdnNo}
and IMPLT_TASK_SE_CD = #{impltTaskSeCd}
and DEL_YN = 'N'
</select>
<select id="selectActInfoList" parameterType="LevyPrvntcActInfoVO" resultType="LevyPrvntcActInfoVO">
select t2.PSTN_INFO_ID,
t2.LDCG_CD,
@ -36,7 +45,10 @@
pi.PSTN_IDX, -- 위치지수
substring(t3.ACT_BGNG_YMD,1,4) as ELPS_YR_RDVLRT_YR,
CASE WHEN (CAST(substring(t3.ACT_BGNG_YMD,1,4) as SIGNED)-CAST(t1.CRDN_YR as SIGNED)) >= strct.RDVLRT_CN_YR_CNT THEN strct.LAST_YR_RDVLRT
ELSE 1-((CAST(substring(t3.ACT_BGNG_YMD,1,4) as SIGNED)-CAST(t1.CRDN_YR as SIGNED)) * strct.DPRT)
ELSE 1-(
(CAST(t1.CRDN_YR as SIGNED) - CAST(substring(t3.ACT_BGNG_YMD,1,4) as SIGNED))
* strct.DPRT
)
end as ELPS_YR_RDVLRT, -- 경과 연도 잔가율
strct.BSCS_CSTRN_Y_BDST_CMPTTN_RT, -- 기초공사Y건축물산정비율
strct.BSCS_CSTRN_N_BDST_CMPTTN_RT, -- 기초공사N건축물산정비율
@ -74,7 +86,7 @@
order by CMPTTN_RT_2_CD asc
</select>
<select id="selectAdsbmtnRtList" parameterType="go.kr.project.crdn.crndRegistAndView.main.model.AdsbmtnRtVO" resultType="go.kr.project.crdn.crndRegistAndView.main.model.AdsbmtnRtVO">
<select id="selectAdsbmtnRtList" parameterType="go.kr.project.crdn.crndRegistAndView.main.model.CrdnAdsbmtnRtVO" resultType="go.kr.project.crdn.crndRegistAndView.main.model.CrdnAdsbmtnRtVO">
SELECT
ar.ADSBMTN_RT_CD,
ar.ADSBMTN_RT_SE_CD,

@ -26,51 +26,6 @@
<input type="hidden" id="crdnYr" name="crdnYr" value="${crdnYr}" />
<input type="hidden" id="crdnNo" name="crdnNo" value="${crdnNo}" />
<input type="hidden" id="pstnInfoId" name="pstnInfoId" value="${pstnData.pstnInfoId}" />
<table>
<colgroup>
<col style="width: 120px;" />
<col style="width: 120px;" />
<col style="width: 150px;" />
<col style="width: 180px;" />
<col style="width: 180px;" />
<col />
</colgroup>
<thead>
<tr>
<th>연도</th>
<th>단속번호</th>
<th>구분</th>
<th>단속동</th>
<th>행정처분시작일</th>
<th>행정처분종료일</th>
<th>행정처분간격일</th>
</tr>
</thead>
<tbody>
<tr>
<td>${crdnYr}</td>
<td>${crdnNo}</td>
<td>${crdnData.rgnSeCdNm}</td>
<td>${pstnData.stdgEmdCdNm}</td>
<td>
<input type="text" id="impltBgngYmd" name="impltBgngYmd" class="input calender datepicker width120"
maxlength="10" validation-check="required"
value="${dateUtil:formatDateString(impltTaskInfo.impltBgngYmd)}" onchange="calculateDaysBetween();" />
</td>
<td>
<input type="text" id="impltEndYmd" name="impltEndYmd" class="input calender datepicker width120"
maxlength="10" validation-check="required"
value="${dateUtil:formatDateString(impltTaskInfo.impltEndYmd)}" onchange="calculateDaysBetween();" />
</td>
<td>
<input type="text" id="impltDaysCnt" name="impltDaysCnt" class="input width100 numericMask"
readonly value="${impltTaskInfo.impltDaysCnt}" />
일 (자동계산)
</td>
</tr>
</tbody>
</table>
</form>
</div>
@ -630,26 +585,9 @@
// 폼 데이터 수집
var formData = this.collectFormData();
// 그리드에서 선택된 이행 대상자 정보 수집
var selectedTrprInfoList = this.collectSelectedTrprInfo();
// 선택된 이행 대상자가 없으면 경고
if (selectedTrprInfoList.length === 0) {
alert('이행 대상자를 선택해주세요.');
return;
}
// 이행 대상자 정보를 formData에 추가
for (var i = 0; i < selectedTrprInfoList.length; i++) {
var trprInfo = selectedTrprInfoList[i];
for (var key in trprInfo) {
formData['impltTrprInfoList[' + i + '].' + key] = trprInfo[key];
}
}
var url = this.mode === 'C' ?
'<c:url value="/crdn/crndRegistAndView/crdnImpltTask/insertImpltInfo.ajax"/>' :
'<c:url value="/crdn/crndRegistAndView/crdnImpltTask/updateImpltInfo.ajax"/>';
'<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/insertLevyInfo.ajax"/>' :
'<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/updateLevyInfo.ajax"/>';
$.ajax({
url: url,
@ -687,31 +625,6 @@
};
},
/**
* 폼 유효성 검증
*/
validateForm: function() {
if (!$('#impltBgngYmd').val()) {
alert('행정처분 시작일을 입력해주세요.');
$('#impltBgngYmd').focus();
return false;
}
if (!$('#impltEndYmd').val()) {
alert('행정처분 종료일을 입력해주세요.');
$('#impltEndYmd').focus();
return false;
}
if ($('#impltBgngYmd').val() > $('#impltEndYmd').val()) {
alert('행정처분 시작일은 종료일보다 이전이어야 합니다.');
$('#impltBgngYmd').focus();
return false;
}
return true;
},
};
/**
@ -752,7 +665,7 @@
$('#levyWholAmtDisplay').text(levyWholAmt.toLocaleString() + ' 원');
} else {
$('#levyWholAmt').val('');
$('#levyWholAmtDisplay').text('');
$('#levyWholAmtDisplay').text('0 원');
}
}

@ -455,7 +455,7 @@
// 기존 이행정보가 있는지 확인하여 모드 결정
var self = this;
$.ajax({
url: '<c:url value="/crdn/crndRegistAndView/crdnImpltTask/selectImpltInfo.ajax"/>',
url: '<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/selectLevyInfoFirstCheck.ajax"/>',
type: 'GET',
data: {
crdnYr: crdnYr,
@ -463,7 +463,7 @@
impltTaskSeCd: impltTaskSeCd
},
success: function(response) {
var mode = (response && response.success && response.data) ? 'U' : 'C';
var mode = (response && response.success && response.data > 0) ? 'U' : 'C';
var url = '<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/levyPrvntcPopup.do"/>?mode=' + mode +
'&crdnYr=' + encodeURIComponent(crdnYr) +
'&crdnNo=' + encodeURIComponent(crdnNo) +

Loading…
Cancel
Save