2024-04-16 16:03 기소유예 통계 작업 완료

This commit is contained in:
myname 2024-04-16 16:03:46 +09:00
parent 4d546bf138
commit da40101b47
3 changed files with 770 additions and 19 deletions

View File

@ -584,18 +584,25 @@ public class CndtnInstrMngController {
//통계- 검찰청별 교육 수료 현황(그래프 포함) //통계- 검찰청별 교육 수료 현황(그래프 포함)
{ {
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail); List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
model.addAttribute("list_no4",selectAsgnmInfoT4List_no4); model.addAttribute("list_no4",selectAsgnmInfoT4List_no4);
} }
// 월별 교육현황(그래프 포함) - 대상이 없어서 제공안됨 // 월별 교육수현황(그래프 포함) - 대상이 없어서 제공안됨
{ {
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
model.addAttribute("list_no5",selectAsgnmInfoT5List);
} }
// 대상별 교육수료현황(그래프 포함) - 대상이 없어서 제공안됨 // 대상별 교육수현황(그래프 포함) - 대상이 없어서 제공안됨
{ {
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
} }
// 월별 교육대상별 교육인원(그래프 포함) - 대상이 없어서 제공안됨 // 월별 교육대상별 교육인원(그래프 포함) - 대상이 없어서 제공안됨
{ {
@ -833,7 +840,7 @@ public class CndtnInstrMngController {
} }
/** /**
* 교육실적통계 Excel - 조건부기소유예 - 검찰청별 교육 의뢰 현황(그래프 포함) * 교육실적통계 Excel - 조건부기소유예 - 2검찰청별 교육 의뢰 현황(그래프 포함)
* @param model * @param model
* @return * @return
* @throws Exception * @throws Exception
@ -988,6 +995,241 @@ public class CndtnInstrMngController {
return modelAndView; return modelAndView;
} }
/**
* 교육실적통계 Excel - 조건부기소유예 - 4검찰청별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no4.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no4(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, ModelMap model
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
try {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-검찰청별 교육 이수 현황";
int[] width = {
4000, 4000
}; // 너비
//33개 항목
String[] header = {
"구분"
, "이수(명)"
};
String[] order = {
"CodeNm"
, "Cnt"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 5검찰청별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no5.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no5(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, ModelMap model
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
try {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
selectAsgnmInfoT2List.get(12).setCodeNm("합계");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-월별 교육 이수 현황";
int[] width = {
4000, 4000
}; // 너비
//33개 항목
String[] header = {
""
, "이수(명)"
};
String[] order = {
"CodeNm"
, "Cnt"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 3대상별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no6.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no6(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, ModelMap model
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
try {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
selectAsgnmInfoT3List.get(2).setCodeNm("합계");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT3List);
// 세팅값
String title = "교육실적통계-대상별 교육 이수 현황";
int[] width = {
4000, 4000
}; // 너비
//33개 항목
String[] header = {
"대상"
, "이수(명)"
};
String[] order = {
"CodeNm"
, "Cnt"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //

View File

@ -2142,6 +2142,11 @@
/* 병합제거시 주석 제거 할것 /* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null AND a.prcs_aplct_prd_ord_cmplt IS null
*/ */
<isNotEmpty property="searchEduStateCd">
AND a.edu_state_cd = #searchEduStateCd#
</isNotEmpty>
GROUP BY a.CMPTNT_ATHRT GROUP BY a.CMPTNT_ATHRT
)aa LEFT OUTER JOIN )aa LEFT OUTER JOIN
( (
@ -2201,6 +2206,10 @@
/* 병합제거시 주석 제거 할것 /* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null */ AND a.prcs_aplct_prd_ord_cmplt IS null */
<isNotEmpty property="searchEduStateCd">
AND a.edu_state_cd = #searchEduStateCd#
</isNotEmpty>
GROUP BY GROUP BY
TO_CHAR(a.req_pnttm, 'MM' ) )aa TO_CHAR(a.req_pnttm, 'MM' ) )aa
@ -2246,6 +2255,10 @@
/* 병합제거시 주석 제거 할것 /* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null */ AND a.prcs_aplct_prd_ord_cmplt IS null */
<isNotEmpty property="searchEduStateCd">
AND a.edu_state_cd = #searchEduStateCd#
</isNotEmpty>
GROUP BY GROUP BY
substring(req_nmbr,0,1) )aa substring(req_nmbr,0,1) )aa

View File

@ -99,28 +99,22 @@
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no3.do'/>"; listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no3.do'/>";
listForm.submit(); listForm.submit();
} }
function excelDownLoad_no4(){ function excelDownLoad_no4(){
var listForm = document.listForm ; var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no4.do'/>"; listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no4.do'/>";
listForm.submit(); listForm.submit();
} }
function excelDownLoad_no5_no6_no7(){ function excelDownLoad_no5(){
var listForm = document.listForm ; var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_adult_no5_no6_no7.do'/>"; listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no5.do'/>";
listForm.submit(); listForm.submit();
} }
function excelDownLoad_no8(){ function excelDownLoad_no6(){
var listForm = document.listForm ; var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no8.do'/>"; listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no6.do'/>";
listForm.submit();
}
function excelDownLoad_no9(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no9.do'/>";
listForm.submit(); listForm.submit();
} }
@ -708,7 +702,509 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- //list --> <!-- //list -->
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
④검찰청별 교육 이수 현황
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no4();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT_4 = [];
//var dataNOP = [];
var month_4 = [];
</script>
<c:forEach var="list" items="${list_no4}" varStatus="status">
<script type="text/javascript">
dataNOT_4.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month_4.push('${list.codeNm}');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT_4.pop();
//dataNOP.pop();
month_4.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll_4" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll_4 = echarts.init(document.getElementById('chartAll_4'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll_4 = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month_4,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 90,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT_4
}
]
}
//차트 옵션 적용
chartAll_4.setOption(optionAll_4);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 200px">
<col style="width: 200px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<th>이수(명)</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list_no4}" varStatus="status">
<tr>
<!--
<td>
<c:choose>
<c:when test="${list.divCd eq title1}">
</c:when>
<c:otherwise>
<c:out value="${list.divCd}"/>
</c:otherwise>
</c:choose>
</td>
-->
<td><c:out value="${list.codeNm}"/></td>
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
</tr>
</c:forEach>
<c:if test="${empty list_no4}">
<tr><td colspan="2"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
⑤월별 교육 이수 현황
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no5();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT_5 = [];
//var dataNOP = [];
var month_5 = [];
</script>
<c:forEach var="list" items="${list_no5}" varStatus="status">
<script type="text/javascript">
dataNOT_5.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month_5.push('${list.codeNm}월');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT_5.pop();
//dataNOP.pop();
month_5.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll_5" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll_5 = echarts.init(document.getElementById('chartAll_5'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll_5 = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month_5,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 0,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT_5
}
]
}
//차트 옵션 적용
chartAll_5.setOption(optionAll_5);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<c:forEach var="list" items="${list_no5}" varStatus="status">
<th>
<c:choose>
<c:when test="${list.codeNm eq '13'}">합계</c:when>
<c:otherwise>${list.codeNm}월</c:otherwise>
</c:choose>
</th>
</c:forEach>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
<td>이수(명)</td>
<c:forEach var="list" items="${list_no5}" varStatus="status">
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
</c:forEach>
</tr>
<c:if test="${empty list_no5}">
<tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
⑥대상별 교육 이수 현황
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no6();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT_6 = [];
//var dataNOP = [];
var month_6 = [];
</script>
<c:forEach var="list" items="${list_no6}" varStatus="status">
<script type="text/javascript">
dataNOT_6.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month_6.push('${list.codeNm}');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT_6.pop();
//dataNOP.pop();
month_6.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll_6" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll_6 = echarts.init(document.getElementById('chartAll_6'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll_6 = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month_6,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 0,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT_6
}
]
}
//차트 옵션 적용
chartAll_6.setOption(optionAll_6);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<c:forEach var="list" items="${list_no6}" varStatus="status">
<th>
<c:choose>
<c:when test="${list.codeNm eq 'ZZ'}">합계</c:when>
<c:otherwise>${list.codeNm}</c:otherwise>
</c:choose>
</th>
</c:forEach>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
<td>이수(명)</td>
<c:forEach var="list" items="${list_no6}" varStatus="status">
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
</c:forEach>
</tr>
<c:if test="${empty list_no6}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
</c:if> </c:if>
</div> </div>
</div> </div>