2024-05-31 16:49 기소유예 오류 수정 및 성인 찾교 오류 수정

This commit is contained in:
myname 2024-05-31 16:49:55 +09:00
parent 657bf89b57
commit 460a9d963f
16 changed files with 398 additions and 20 deletions

View File

@ -943,7 +943,7 @@ public class CrownixAjaxController {
if("99".equals(vEEduAplctVOList.get(i).getEduMdCd())) {
addr = vEEduAplctVOList.get(i).getEduMd();
}else {
addr = vEEduAplctVOList.get(i).getEduMdCd();
addr = vEEduAplctVOList.get(i).getEduMdCdNm();
}
}else { //오프라인 교육
addr = vEEduAplctVOList.get(i).getAddr() + vEEduAplctVOList.get(i).getAddrDetail();

View File

@ -483,6 +483,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public String lctrEndM;
public String eduMdCd; //교육매체 코드
public String eduMdCdNm; //교육매체 코드명
public String feeInsttCd; //강사료지급기관코드
private String eduHopeMonth; //희망일자()
@ -2013,6 +2015,12 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setEduMdCd(String eduMdCd) {
this.eduMdCd = eduMdCd;
}
public String getEduMdCdNm() {
return eduMdCdNm;
}
public void setEduMdCdNm(String eduMdCdNm) {
this.eduMdCdNm = eduMdCdNm;
}
public String getFeeInsttCd() {
return feeInsttCd;
}

View File

@ -177,4 +177,7 @@ public interface VEInstrMixService {
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
}

View File

@ -347,4 +347,9 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no5", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no7", vEInstrDetailVO);
return tlist;
}
}

View File

@ -278,4 +278,8 @@ public class VEInstrMixServiceImpl implements VEInstrMixService {
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no5(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no7(vEInstrDetailVO);
}
}

View File

@ -229,6 +229,25 @@ public class VELctrDetailVO extends ComDefaultVO implements Serializable {
private String cnt; //통계 데이터 숫자
private String cnt2; //통계 데이터 숫자
private String codeNm2; //차시명
private String codeNm3; //차시명
public String getCodeNm3() {
return codeNm3;
}
public void setCodeNm3(String codeNm3) {
this.codeNm3 = codeNm3;
}
private String codeNm4; //차시명
public String getCodeNm4() {
return codeNm4;
}
public void setCodeNm4(String codeNm4) {
this.codeNm4 = codeNm4;
}
private String eduCd20; //이수
private String eduCd40; //미이수
private String eduCd50; //연기
public String getPrcsOrd() {
@ -1188,5 +1207,29 @@ public class VELctrDetailVO extends ComDefaultVO implements Serializable {
public void setCnt2(String cnt2) {
this.cnt2 = cnt2;
}
public String getCodeNm2() {
return codeNm2;
}
public void setCodeNm2(String codeNm2) {
this.codeNm2 = codeNm2;
}
public String getEduCd20() {
return eduCd20;
}
public void setEduCd20(String eduCd20) {
this.eduCd20 = eduCd20;
}
public String getEduCd40() {
return eduCd40;
}
public void setEduCd40(String eduCd40) {
this.eduCd40 = eduCd40;
}
public String getEduCd50() {
return eduCd50;
}
public void setEduCd50(String eduCd50) {
this.eduCd50 = eduCd50;
}
}

View File

@ -2022,12 +2022,12 @@ public class CndtnTrgtMngController {
, 3500
}; // 너비
String[] header = {
"의뢰일", "사건번호", "관할청", "생년월일", "성명"
"의뢰일", "사건번호", "관할청", "생년월일", "성명", "연락처"
, "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소"
, "검사명"
}; // 헤더에 들어갈 이름
String[] order = {
"ReqPnttm", "VntYear", "CmptntAthrtNm", "DBirth", "TrgtNm"
"ReqPnttm", "VntYear", "CmptntAthrtNm", "DBirth", "TrgtNm", "Clphone"
, "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr"
, "PrsctrNm"

View File

@ -604,8 +604,12 @@ public class CndtnInstrMngController {
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육대상별 교육인원(그래프 포함) - 대상이 없어서 제공안됨
{
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
//vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
model.addAttribute("list_no7",selectAsgnmInfoT7List);
}
//통계- 인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
@ -1153,6 +1157,91 @@ public class CndtnInstrMngController {
return modelAndView;
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 5검찰청별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no7.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no7(
@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> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
//selectAsgnmInfoT2List.get(12).setCodeNm("합계");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT7List);
// 세팅값
String title = "교육실적통계-월별 교육 이수, 미이수, 연기 현황";
int[] width = {
4000, 4000, 4000, 4000, 4000
}; // 너비
//33개 항목
String[] header = {
""
, "차시"
, "이수인원"
, "미이수 인원"
, "연기인원"
};
String[] order = {
"CodeNm4"
, "CodeNm3"
, "EduCd20"
, "EduCd40"
, "EduCd50"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 3대상별 교육 이수 현황(그래프 포함)
* @param model

View File

@ -451,6 +451,7 @@
, CASE
WHEN a.prcs_aplct_prd_ord_cmplt IS NOT NULL THEN '병합처리'
WHEN a.EDU_STATE_CD = '20' AND a.req_state_cd = '20' THEN '완료'
ELSE (
SELECT CODE_NM
FROM LETTCCMMNDETAILCODE
@ -506,10 +507,23 @@
<isNotEmpty prepend="AND" property="searchEduStateCd">
a.EDU_STATE_CD = #searchEduStateCd#
</isNotEmpty>
/* 교육상태 검색*/
<isNotEmpty prepend="AND" property="searchReqStateCd">
a.REQ_STATE_CD = #searchReqStateCd#
/* 교육상태 검색*/
<isNotEmpty property="searchReqStateCd">
<isEqual property="searchReqStateCd" compareValue="30">
AND a.EDU_STATE_CD = '20'
</isEqual>
<isNotEqual property="searchReqStateCd" compareValue="30">
<isEqual property="searchReqStateCd" compareValue="20">
AND (a.REQ_STATE_CD = '20' AND a.EDU_STATE_CD!='20')
</isEqual>
<isNotEqual property="searchReqStateCd" compareValue="20">
AND a.REQ_STATE_CD = #searchReqStateCd#
</isNotEqual>
</isNotEqual>
</isNotEmpty>
/* 교육상태 검색*/
<isNotEmpty prepend="AND" property="searchSex">
a.SEX = #searchSex#

View File

@ -9207,12 +9207,20 @@ VALUES
<!-- 성인 결과보고 리포트 L page -->
<select id="VEEduMIXDAO.selectAdultRsltRprtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectEduCmpltCrtfcNmbrList */
/* VEEduMIXDAO.selectAdultRsltRprtList */
SELECT
a.edu_aplct_ord AS eduAplctOrd,
a.edu_slct_cd AS eduSlctCd,
a.edu_md_cd AS eduMdCd,
a.edu_md AS eduMd,
(
SELECT x.CODE_NM
FROM LETTCCMMNDETAILCODE x
WHERE x.USE_AT = 'Y'
AND x.CODE_ID = 'VEA015'
AND x.CODE = a.edu_md_cd) AS eduMdCdNm,
a.post AS post,
a.addr AS addr,
a.addr_detail AS addrDetail,
@ -9266,7 +9274,7 @@ VALUES
<!-- 성인 결과보고 리포트 L page -->
<select id="VEEduMIXDAO.selectTngrRsltRprtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectEduCmpltCrtfcNmbrList */
/* VEEduMIXDAO.selectTngrRsltRprtList */
SELECT
a.edu_aplct_ord AS eduAplctOrd,
a.schol_instt_nm AS scholInsttNm,

View File

@ -2305,14 +2305,16 @@
, count(*) cnt2
FROM (
SELECT
TO_CHAR(a.req_pnttm, 'MM' ) AS CMPTNT_ATHRT ,
SUBSTRING(c.edu_strt_pnttm,6,2) AS CMPTNT_ATHRT ,
count(*) AS cnt
FROM
vea_sspn_idmt_trgt a
, ve_edu_aplct b
WHERE to_char(a.REQ_PNTTM,'YYYY')=#mngNmbrYr#
, ve_prcs_aplct_prd c
WHERE SUBSTRING(c.edu_strt_pnttm,1,4)=#mngNmbrYr#
AND b.aprvl_cd='60'
AND b.prcs_ord=c.prcs_aplct_prd_ord
AND a.sspn_idtmt_trgt_ord=b.rnds_ord
/* 병합제거시 주석 제거 할것
@ -2323,7 +2325,7 @@
</isNotEmpty>
GROUP BY
TO_CHAR(a.req_pnttm, 'MM' )
SUBSTRING(c.edu_strt_pnttm,6,2)
, b.prcs_ord
)z0
GROUP BY CMPTNT_ATHRT
@ -2335,5 +2337,93 @@
on(aaa.mnt=bbb.codeNm)
ORDER BY aaa.mnt
</select>
</select>
<!-- 교육실정통계- ⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계 -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_csi_no7" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_csi_no7 */
SELECT aaa.mnt AS codeNm
, NVL(ccc.title,'ZZZ') AS codeNm2
, NVL(ccc.title,NVL(bbb.cnt,0)) AS codeNm3
, case
when aaa.mnt='13' then '합계'
when ccc.title is null then aaa.mnt||'월 합계'
else aaa.mnt||'월'
end as codeNm4
, NVL(bbb.edu_cd_20,0) AS eduCd20
, NVL(bbb.edu_cd_40,0) AS eduCd40
, NVL(bbb.edu_cd_50,0) AS eduCd50
, NVL(bbb.cnt,0) AS cnt
FROM (
SELECT '01' AS mnt FROM dual
UNION ALL SELECT '02' AS mnt FROM dual
UNION ALL SELECT '03' AS mnt FROM dual
UNION ALL SELECT '04' AS mnt FROM dual
UNION ALL SELECT '05' AS mnt FROM dual
UNION ALL SELECT '06' AS mnt FROM dual
UNION ALL SELECT '07' AS mnt FROM dual
UNION ALL SELECT '08' AS mnt FROM dual
UNION ALL SELECT '09' AS mnt FROM dual
UNION ALL SELECT '10' AS mnt FROM dual
UNION ALL SELECT '11' AS mnt FROM dual
UNION ALL SELECT '12' AS mnt FROM dual
UNION ALL SELECT '13' AS mnt FROM dual
)aaa
LEFT OUTER JOIN
(
SELECT
NVL(aa.CMPTNT_ATHRT,'13') AS codeNm
, NVL(aa.prcs_ord,'13') AS codeNm2
, sum(aa.edu_cd_20) AS edu_cd_20
, sum(aa.edu_cd_40) AS edu_cd_40
, sum(aa.edu_cd_50) AS edu_cd_50
, count(*) cnt
FROM
(
SELECT CMPTNT_ATHRT
, prcs_ord
, sum(edu_cd_20) edu_cd_20
, sum(edu_cd_40) edu_cd_40
, sum(edu_cd_50) edu_cd_50
FROM (
SELECT
SUBSTRING(c.edu_strt_pnttm,6,2) AS CMPTNT_ATHRT
, count(*) AS cnt
, b.prcs_ord
, sum(CASE WHEN a.edu_state_cd='20' THEN 1 ELSE 0 END) AS edu_cd_20
, sum(CASE WHEN a.edu_state_cd='40' THEN 1 ELSE 0 END) AS edu_cd_40
, sum(CASE WHEN a.edu_state_cd='50' THEN 1 ELSE 0 END) AS edu_cd_50
FROM
vea_sspn_idmt_trgt a
, ve_edu_aplct b
, ve_prcs_aplct_prd c
WHERE SUBSTRING(c.edu_strt_pnttm,1,4)=#mngNmbrYr#
AND b.aprvl_cd='60'
AND b.prcs_ord=c.prcs_aplct_prd_ord
AND a.sspn_idtmt_trgt_ord=b.rnds_ord
/* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null */
AND a.edu_state_cd IN ('20','40','50') /* 20-이수 40-미이수 50-연기 */
GROUP BY
SUBSTRING(c.edu_strt_pnttm,6,2)
, b.prcs_ord
)z0
GROUP BY CMPTNT_ATHRT
, prcs_ord
)aa
GROUP BY
ROLLUP(aa.CMPTNT_ATHRT, aa.prcs_ord)
)bbb
on(aaa.mnt=bbb.codeNm)
LEFT OUTER JOIN ve_prcs_aplct_prd ccc
on(bbb.codeNm2=ccc.prcs_aplct_prd_ord)
ORDER BY aaa.mnt, ccc.title
</select>
</sqlMap>

View File

@ -641,8 +641,8 @@
}else{ //개발
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
viewer.hideToolbarItem(["save"]);
/* viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://192.168.0.12:8086/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']'); */
viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']');
viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://192.168.0.32:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']');
//viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']');
}
}

View File

@ -117,6 +117,12 @@
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no6.do'/>";
listForm.submit();
}
function excelDownLoad_no7(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no7.do'/>";
listForm.submit();
}
function excelDownLoadArea(){
var listForm = document.listForm ;
@ -1210,7 +1216,98 @@
</tbody>
</table>
</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_no7();">엑셀 다운로드</button>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 200px">
<col style="width: 150px">
<col style="width: 150px">
<col style="width: 150px">
<col style="width: 150px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th></th>
<th>차시</th>
<th>이수인원</th>
<th>미이수 인원</th>
<th>연기인원</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list_no7}" 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>
-->
<c:choose>
<c:when test="${list.codeNm eq '13'}">
<td>합계</td>
</c:when>
<c:when test="${list.codeNm2 eq 'ZZZ'}">
<td><c:out value="${list.codeNm}"/>월 합계</td>
</c:when>
<c:otherwise>
<td><c:out value="${list.codeNm}"/>월</td>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${list.codeNm2 eq 'ZZZ'}">
<td><c:out value="${list.cnt}"/></td>
</c:when>
<c:otherwise>
<td><c:out value="${list.codeNm2}"/></td>
</c:otherwise>
</c:choose>
<td><fmt:formatNumber value="${list.eduCd20}" pattern="#,###"/></td>
<td><fmt:formatNumber value="${list.eduCd40}" pattern="#,###"/></td>
<td><fmt:formatNumber value="${list.eduCd50}" pattern="#,###"/></td>
</tr>
</c:forEach>
<c:if test="${empty list_no7}">
<tr><td colspan="2"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
</c:if>
</div>
</div>

View File

@ -263,7 +263,12 @@
<c:out value="${list.reqNmbr }" />
</td>
<td>
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
<c:if test="${list.eduStateCd eq '20'}">
완료
</c:if>
<c:if test="${list.eduStateCd ne '20'}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</c:if>
</td>
<td>
<ve:code codeId="VEA002" code="${list.eduStateCd }"/>

View File

@ -774,7 +774,13 @@
<!-- 의뢰상태 -->
<td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;">
<c:if test="${empty list.prcsAplctPrdOrdCmplt}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
<c:if test="${list.eduStateCd eq '20'}">
완료
</c:if>
<c:if test="${list.eduStateCd ne '20'}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</c:if>
</c:if>
<c:if test="${not empty list.prcsAplctPrdOrdCmplt}">
병합처리

View File

@ -875,7 +875,13 @@
</td>
<td><!-- 의뢰상태 -->
<c:if test="${empty list.prcsAplctPrdOrdCmplt}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
<c:if test="${list.eduStateCd eq '20'}">
완료
</c:if>
<c:if test="${list.eduStateCd ne '20'}">
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</c:if>
</c:if>
<c:if test="${not empty list.prcsAplctPrdOrdCmplt}">
병합처리