재부과 그리드 테스트, 기초 틀 잡는중...

dev
박성영 2 months ago
parent 11442ee708
commit 528dc889e6

@ -3,6 +3,7 @@ package go.kr.project.common.model;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
* packageName : go.kr.project.common
@ -45,6 +46,7 @@ public class DefaultVO implements Serializable {
/** 정렬구분 */
private Boolean sortAscending;
/** TUI Grid 속성 (row class 등) */
private Map<String, Object> _attributes;
}

@ -98,7 +98,10 @@ public class LevyRelevyVO extends PagingVO {
/** 재부과 여부 */
private String relevyYn;
/** 재부과 대상 여부 (당해년도 재부과 가능 여부) */
private String relevyTrgtYn;
/** 가중 부과 대상 여부 */
private String agrvtnLevyTrgtYn;
@ -208,4 +211,7 @@ public class LevyRelevyVO extends PagingVO {
/** 검색 조건 - 가중 부과 대상 여부 */
private String schAgrvtnLevyTrgtYn;
/** 현재 연도 (재부과 대상 체크용) */
private String currentYear;
}

@ -8,7 +8,10 @@ import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* packageName : go.kr.project.levy.levyRelevy.service.impl
@ -31,13 +34,35 @@ public class LevyRelevyServiceImpl extends EgovAbstractServiceImpl implements Le
/**
* .
* :
*
* @param vo VO
* @return
*/
@Override
public List<LevyRelevyVO> selectList(LevyRelevyVO vo) {
return mapper.selectList(vo);
// 현재 연도 설정 (재부과 대상 체크용)
String currentYear = String.valueOf(java.time.Year.now().getValue());
vo.setCurrentYear(currentYear);
List<LevyRelevyVO> list = mapper.selectList(vo);
// 재부과 대상이 아닌 경우 rowClass 추가
for (LevyRelevyVO item : list) {
if ("N".equals(item.getRelevyTrgtYn())) {
// TUI Grid _attributes 설정
Map<String, Object> attributes = new HashMap<>();
Map<String, Object> className = new HashMap<>();
List<String> rowClass = new ArrayList<>();
rowClass.add("tui-grid-custom-color-red");
className.put("row", rowClass);
attributes.put("className", className);
item.set_attributes(attributes);
}
}
return list;
}
/**

@ -62,7 +62,28 @@
CONCAT(act.VLTN_BDST, ' 등 ', (SELECT COUNT(1) FROM tb_act_info a2 WHERE a2.CRDN_YR = a.CRDN_YR AND a2.CRDN_NO = a.CRDN_NO AND a2.DEL_YN='N'), '건')
ELSE act.VLTN_BDST END ACT_TYPE_CD_NM,
a.USG_IDX_CD, /* 용도 지수 코드 */
usg.USG_NM AS USG_IDX_CD_NM
usg.USG_NM AS USG_IDX_CD_NM,
/* 재부과 대상 여부 체크: 당해년도에 이미 재부과가 있으면 N, 없으면 Y */
CASE
WHEN EXISTS (
SELECT 1
FROM tb_crdn c2
WHERE (
/* 케이스1: 선택한 단속 자체가 당해년도인 경우 */
(c2.CRDN_YR = c.CRDN_YR AND c2.CRDN_NO = c.CRDN_NO AND c2.CRDN_YR = #{currentYear})
OR
/* 케이스2: 선택한 단속의 최초 단속을 참조하는 당해년도 재부과가 있는 경우 */
(
c2.FRST_CRDN_YR = COALESCE(c.FRST_CRDN_YR, c.CRDN_YR)
AND c2.FRST_CRDN_NO = COALESCE(c.FRST_CRDN_NO, c.CRDN_NO)
AND c2.CRDN_YR = #{currentYear}
)
)
AND c2.DEL_YN = 'N'
)
THEN 'N'
ELSE 'Y'
END AS RELEVY_TRGT_YN
FROM tb_crdn c
LEFT JOIN tb_cd_detail sgg ON sgg.CD_GROUP_ID = 'ORG_CD' AND sgg.CD_ID = c.SGG_CD
LEFT JOIN tb_cd_detail rgn ON rgn.CD_GROUP_ID = 'RGN_SE_CD' AND rgn.CD_ID = c.RGN_SE_CD
@ -70,7 +91,7 @@
LEFT JOIN tb_cd_detail stts ON stts.CD_GROUP_ID = 'CRDN_PRCS_STTS_CD' AND stts.CD_ID = c.CRDN_PRCS_STTS_CD
LEFT JOIN tb_user u ON u.USER_ID = c.RGTR AND u.USE_YN = 'Y'
LEFT JOIN tb_pstn_info p ON p.CRDN_YR = c.CRDN_YR AND p.CRDN_NO = c.CRDN_NO AND p.DEL_YN = 'N'
LEFT JOIN tb_cd_detail emd ON emd.CD_GROUP_ID = 'STDG_EMD_CD' AND emd.CD_ID = p.STDG_EMD_CD
LEFT JOIN tb_cd_detail emd ON emd.CD_GROUP_ID = 'STDG_EMD_CD' AND emd.CD_ID = p.STDG_EMD_CD
LEFT Join tb_act_info a ON a.CRDN_YR = c.CRDN_YR and a.CRDN_NO = c.CRDN_NO AND a.DEL_YN = 'N' AND a.ACT_NO = (SELECT MIN(a1.ACT_NO) FROM tb_act_info a1 WHERE a1.CRDN_YR = a.CRDN_YR AND a1.CRDN_NO = a.CRDN_NO AND a1.DEL_YN='N')
LEFT JOIN tb_act_type act ON act.ACT_TYPE_CD = a.ACT_TYPE_CD
LEFT JOIN tb_usg_idx usg ON usg.USG_IDX_CD = a.USG_IDX_CD AND usg.DEL_YN = 'N'

@ -4,27 +4,6 @@
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
<%--
재부과 관련 기초 그리드 조회 프로그램
src/main/webapp/WEB-INF/views/levy/levyRelevy/list.jsp
src/main/java/go/kr/project/levy/levyRelevy/controller/LevyRelevyController.java
src/main/java/go/kr/project/levy/levyRelevy/mapper/LevyRelevyMapper.java
src/main/java/go/kr/project/levy/levyRelevy/model/LevyRelevyVO.java
src/main/java/go/kr/project/levy/levyRelevy/service/impl/LevyRelevyServiceImpl.java
src/main/java/go/kr/project/levy/levyRelevy/service/LevyRelevyService.java
src/main/resources/mybatis/mapper/levy/levyRelevy/RevyRelevyMapper_maria.xml
tb_crdn.FRST_CRDN_YR:최초 단속 연도
tb_crdn.FRST_CRDN_NO:최초 단속 번호
tb_crdn.RELEVY_TRGT_CRDN_YR:재부과 대상 단속 연도,자신의 바로 위 부모
tb_crdn.RELEVY_TRGT_CRDN_NO:재부과 대상 단속 번호,자신의 바로 위 부모
구현 대상, 일부 기능은 구현 완료, 하위 그리드에 대한 내용은 구현안되어 있음
1. 이메뉴는 재부과 대상(schCrdnYr : 올해-1년) 메인 리스트를 보여준뒤, focus 가 되면
2. 하위 그리드(현재 구현안되어 있음)에 최초 단속부터, 자기 자신을 제외한 chain 단속(재부과) 목록을 부여줘야해
--%>
<!-- Main body -->
<div class="main_body">
<section id="section8" class="main_bars">
@ -263,6 +242,15 @@ tb_crdn.RELEVY_TRGT_CRDN_NO:재부과 대상 단속 번호,자신의 바로 위
return e.value === 'Y' ? '재부과' : '일반';
}
},
{
header: '재부과대상',
name: 'relevyTrgtYn',
align: 'center',
width: 90,
formatter: function(e) {
return e.value === 'Y' ? '대상' : '비대상';
}
},
{
header: '가중부과대상',
name: 'agrvtnLevyTrgtYn',
@ -527,16 +515,6 @@ tb_crdn.RELEVY_TRGT_CRDN_NO:재부과 대상 단속 번호,자신의 바로 위
*/
getGridColumns: function() {
return [
{
header: '순번',
name: '_rowNum',
align: 'center',
width: 60,
sortable: false,
formatter: function(e) {
return e.row.rowKey + 1;
}
},
{ header: '단속년도', name: 'crdnYr', align: 'center', width: 80 },
{ header: '단속번호', name: 'crdnNo', align: 'center', width: 90 },
{ header: '법정동', name: 'stdgEmdCdNm', align: 'center', width: 90 },
@ -569,26 +547,41 @@ tb_crdn.RELEVY_TRGT_CRDN_NO:재부과 대상 단속 번호,자신의 바로 위
minWidth: 250,
formatter: function(e) {
return e.value;
},
hidden: true
},
{ header: '처분사전 일자', name: 'dspsBfhdBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{
header: '부과예고 일자',
name: 'levyPrvntcBgngYmd',
align: 'center',
width: 120,
{ header: '시정명령 일자', name: 'crcCmdBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{
header: '부과 일자',
name: 'levyBgngYmd',
align: 'center',
width: 120,
{ header: '시정촉구 일자', name: 'crcUrgBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
}
},
{ header: '부과예고 일자', name: 'levyPrvntcBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{ header: '부과 일자', name: 'levyBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{ header: '납부촉구 일자', name: 'payUrgBgngYmd', align: 'center', width: 120,
formatter: function (e) {
return e.value ? moment(e.value).format('YYYY-MM-DD') : '';
}
},
{ header: '등록일시', name: 'regDt', align: 'center', width: 150 },
{ header: '등록자', name: 'rgtrNm', align: 'center', width: 100 },
];
},

Loading…
Cancel
Save