From d9632e260a8c7adfe934cb9d06d3c38b2b58cd6f Mon Sep 17 00:00:00 2001 From: myname Date: Tue, 28 Oct 2025 15:49:07 +0900 Subject: [PATCH] =?UTF-8?q?2025-10-28=2015:48=20=EA=B5=90=EC=9C=A1?= =?UTF-8?q?=EC=8B=A4=EC=A0=81=ED=86=B5=EA=B3=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instrInfo/service/VEInstrMixService.java | 5 + .../instrInfo/service/impl/VEInstrMixDAO.java | 5 + .../service/impl/VEInstrMixServiceImpl.java | 5 + .../cmdTrgt/web/CndtnInstrMngController.java | 1571 ----------------- .../prevent/web/PreventMngController.java | 122 +- .../ve/instr/VESttst_MIX_SQL_Postgresql.xml | 68 +- .../jsp/oprtn/prevent/newEduPrfrmMngList.jsp | 35 +- 7 files changed, 216 insertions(+), 1595 deletions(-) delete mode 100644 src/main/java/kcc/ve/oprtn/cmdTrgt/web/CndtnInstrMngController.java diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java index dd9d62f1..fa267737 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java @@ -187,4 +187,9 @@ public interface VEInstrMixService { //교육실정통계- ⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계 List selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception; + + + //예방교육 + //교육실정통계- ⑤월별 교육 이수 현황(그래프 포함) + List selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java index cb9d631a..101606b3 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java @@ -363,4 +363,9 @@ public class VEInstrMixDAO extends EgovAbstractDAO { List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no7", vEInstrDetailVO); return tlist; } + + public List selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception { + List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_csi_prevent_no5", vEInstrDetailVO); + return tlist; + } } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java index 5e25fea0..551364c7 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java @@ -290,4 +290,9 @@ public class VEInstrMixServiceImpl implements VEInstrMixService { public List selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception{ return vEInstrMixDAO.selectEduPrfrmInfo_csi_no7(vEInstrDetailVO); } + + + public List selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception{ + return vEInstrMixDAO.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVO); + } } diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CndtnInstrMngController.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CndtnInstrMngController.java deleted file mode 100644 index 6661c126..00000000 --- a/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CndtnInstrMngController.java +++ /dev/null @@ -1,1571 +0,0 @@ -package kcc.ve.oprtn.cmdTrgt.web; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -import egovframework.rte.fdl.idgnr.EgovIdGnrService; -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.ComDefaultCodeVO; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.cmm.service.impl.CmmUseDAO; -import kcc.com.cmm.spring.data.util.ExcelUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.ve.cmm.VeInstrFeeMng; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService; -import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; -import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCmpltDetailService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; - -/** - * 기반강화연수(관리자) 강사관리 - * 기반강화연수에 관한 controller 클래스를 정의한다. - * @author 조용준 - * @since 2023.07.12 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.12.16  조용준          최초 생성
- *
- * 
- */ - -@Controller -//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn") -public class CndtnInstrMngController { - - private static final Logger LOGGER = LoggerFactory.getLogger(CndtnInstrMngController.class); - - private final String LCTR_DIV_CD = "60"; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //과정 관리 - @Resource(name = "vEPrcsService") - private VEPrcsService vEPrcsService; - - //과정 관리 - @Resource(name = "vEEduMIXService") - private VEEduMIXService vEEduMIXService; - - //온라인콘텐츠과정 관리 - @Resource(name = "vEPrcsOnlnCntntService") - private VEPrcsOnlnCntntService vEPrcsOnlnCntntService; - - //과정차시 관리 - @Resource(name = "vEPrcsAplctPrdService") - private VEPrcsAplctPrdService vEPrcsAplctPrdService; - - //과정차시 관리 - @Resource(name = "vEPrcsMIXService") - private VEPrcsMIXService vEPrcsMIXService; - - //과정차시 관리 - @Resource(name = "vEAPrcsAplctPrdInstrAsgnmService") - private VEAPrcsAplctPrdInstrAsgnmService vEAPrcsAplctPrdInstrAsgnmService; - - //교육과정순번 - @Resource(name="prcsGnrService") - private EgovIdGnrService prcsGnrService; - - //과정신청기간순번 - @Resource(name="prcsAplctPrdGnrService") - private EgovIdGnrService prcsAplctPrdGnrService; - - //과정온라인콘텐츠순번 - @Resource(name="prcsOnlnGnrService") - private EgovIdGnrService prcsOnlnGnrService; - - //교육신청 - @Resource(name = "vEEduAplctService") - private VEEduAplctService vEEduAplctService; - - //차시 - @Resource(name = "vEEduChasiService") - private VEEduChasiService vVEEduChasiService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - //교육과정신청 - @Resource(name = "vEPrcsCmpltDetailService") - private VEPrcsCmpltDetailService vEPrcsCmpltDetailService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - //과정 - @Resource(name="cmmUseDAO") - private CmmUseDAO cmmUseDAO; - - //과정신청기간순번 - @Resource(name="vePrcsAplctPrdEtcGnrService") - private EgovIdGnrService vePrcsAplctPrdEtcGnrService; - - // 강사료 - @Resource(name = "vEInstrFeeService") - private VEInstrFeeService vEInstrFeeService; - - //rkdtk 관리 - @Resource(name = "vEInstrMixService") - private VEInstrMixService vEInstrMixService; - - //강의설정 MIX - @Resource(name = "vELctrMIXService") - private VELctrMIXService vELctrMIXService; - - // 첨부파일 정보 - @Resource(name="vEInstrDetailActvtHstryService") - private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService; - - /* - - // 교육신청 서비스단 - @Resource(name = "AdjReqMgrService") - private AdjReqMgrService adjReqMgrService; - - // eGov 공통코드 - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - // global 프로퍼티 - @Resource(name="globalSettings") - protected Properties propertiesService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - // 첨부파일 정보 - @Resource(name="EgovFileMngService") - private EgovFileMngService fileMngService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - @Resource(name="KccadrMgrUdtService") - private KccadrMgrUdtService kccadrMgrUdtService; - - // 교육신청 서비스단 - @Resource(name = "checkAdrProcessUtil") - private CheckAdrProcessUtil checkAdrProcessUtil; - */ - /** - * 기소유예 교육확정관리목록 - */ - @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnInstrMngList.do") - public String cndtnInstrMngList( @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO - , HttpSession session, ModelMap model ) throws Exception { - - - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); - - //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 - //paginationInfo.setRecordCountPerPage(10000); - - //2. pageing step2 - vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); - - //기반강화 조회 - vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 - - //교육확정 목록 조회 - vEPrcsDetailVO.setDdlnCd("20"); - - //정렬 - System.out.println(vEPrcsDetailVO.getSearchSortCnd()); - System.out.println(vEPrcsDetailVO.getSearchSortOrd()); - if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd()); - } - - - //강사명 검색시 암호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO); - - //강사명 검색시 복호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - - // 지정된 강사가 있는지 확인 - vEPrcsDetailVOList.stream().forEach(t->{ - - List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd()); - if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) { - t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size())); - } - - }); - - //대상 리스트, 페이징 정보 전달 - vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList); - model.addAttribute("list", vEPrcsDetailVOList); - - - - - return "oprtn/cndtnSspnIdtmt/cndtnInstrMngList"; - } - - /** - * 강사료 확정 처리 목록 화면 - */ - //@RequestMapping("eduInstrFeeMngList.do") - @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/eduInstrFeeMngList.do") - public String eduInstrFeeMngList( - //@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - try { - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); - - //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 - //paginationInfo.setRecordCountPerPage(10000); - - //2. pageing step2 - vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); - - //기반강화 조회 - vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 - - //교육확정 목록 조회 - vEPrcsDetailVO.setDdlnCd("20"); - - //정렬 - System.out.println(vEPrcsDetailVO.getSearchSortCnd()); - System.out.println(vEPrcsDetailVO.getSearchSortOrd()); - if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd()); - } - - - //강사명 검색시 암호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO); - - //강사명 검색시 복호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - - // 지정된 강사가 있는지 확인 - vEPrcsDetailVOList.stream().forEach(t->{ - - List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd()); - if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) { - t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size())); - } - - }); - - - // 강사료 계산 - //vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); - //List vEEduAplctVOList = vEEduMIXService.selectTngrFeePagingList(vEEduAplctVO); - VEEduAplctVO vo = new VEEduAplctVO(); - for(int i=0; i < vEPrcsDetailVOList.size(); i++) { - //vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); - //System.out.println(" @@@@@@@@@@@@@ "+vo.getChrgNm()); - //vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm()); - - // 강사료 계산 - VeInstrFeeMng veInstrFeeMng = new VeInstrFeeMng(); - VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = veInstrFeeMng.VeInstrFeeMng4Fndth( - vEInstrFeeService - , vEPrcsDetailVOList.get(i).getPrcsAplctPrdOrd() - , vEPrcsDetailVOList.get(i).getUserId() - ); - vEPrcsDetailVOList.get(i).setInstrFeeSum(Integer.toString(vEInstrFeeAcmdtVO.getInstrFeeSum())); - - System.out.println("vEPrcsDetailVOList.get(i).getInstrPhone()"); - System.out.println(vEPrcsDetailVOList.get(i).getInstrPhone()); - System.out.println(vEPrcsDetailVOList.get(i).getInstrPhone()); - - } - - - //대상 리스트, 페이징 정보 전달 - vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList); - model.addAttribute("list", vEPrcsDetailVOList); - - System.out.println("vEPrcsDetailVOList.toString()"); - System.out.println(vEPrcsDetailVOList.toString()); - }catch(Exception ex) { - ex.printStackTrace(); - } - - return "oprtn/cndtnSspnIdtmt/eduInstrFeeMngList"; - } - - /** - * 강사료 확정 처리 목록 Excel - * @param model - * @return - * @throws Exception - */ - @SuppressWarnings("rawtypes") - @RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduInstrFeeExcelDownLoad.do") - public ModelAndView eduInstrFeeExcelDownLoad( - //@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO - , ModelMap model) throws Exception { - - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); - - //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 - //paginationInfo.setRecordCountPerPage(10000); - - //2. pageing step2 - vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); - - //기반강화 조회 - vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 - - //교육확정 목록 조회 - vEPrcsDetailVO.setDdlnCd("20"); - - //정렬 - System.out.println(vEPrcsDetailVO.getSearchSortCnd()); - System.out.println(vEPrcsDetailVO.getSearchSortOrd()); - if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd()); - } - - - //강사명 검색시 암호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO); - - //강사명 검색시 복호화 - if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) { - vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1())); - } - - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - - vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList); - - - VeInstrFeeMng veInstrFeeMng = new VeInstrFeeMng(); - vEPrcsDetailVOList.forEach( vo -> { - ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); - - try { - - // 강사료 계산 - VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = veInstrFeeMng.VeInstrFeeMng4Fndth4Excel(vEInstrFeeService, vo.getPrcsAplctPrdOrd(), vo.getUserId()); - - vo.setInstrFeeSum(String.format("%,d", vEInstrFeeAcmdtVO.getInstrFeeSum())); - - } - catch(Exception ex) { - System.out.println(ex.toString()); - - } - }); - - List excelData = new ArrayList<>(); - excelData.addAll(vEPrcsDetailVOList); - // 세팅값 - String title = "강사료 지급내역"; - - // 너비 - int[] width = { - 4000, 4000 - , 4000, 4000, 4000 - , 4000 - }; - - // 헤더 - String[] header = { - "교육일자", "과정명" - , "강사이름", "강사료", "교통비" - , "강사료 합계" - }; - - // 컬럼명 - String[] order = { - "EduHopeDt", "PrcsNm" - , "InstrNm", "InstrFee", "TrafficFee" - , "InstrFeeSum" - }; - - // 호출 - SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); - model.addAttribute("locale", Locale.KOREA); - model.addAttribute("workbook", workbook); - model.addAttribute("workbookName", title); - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("excelDownloadView"); - modelAndView.addObject(model); - - return modelAndView; - } - - /** - * 교육실적통계 화면 - */ - @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.do") - public String newEduPrfrmMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , @ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO - , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail - - , HttpSession session - , ModelMap model - ) throws Exception { - - //LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - - - //설정 년 리스트(과거~올해+1) - List selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO); - model.addAttribute("selectStngYrList", selectStngYrList); - - //차시별 정보 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); - List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO); - model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList); - - - //vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 - - - //통계- ①검찰청별 교육 의뢰 현황(그래프 포함) - { - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1); - - model.addAttribute("list_no1",selectAsgnmInfoT2List_no1); - } - - - //통계- ②월별 교육의뢰현황(그래프 포함) - { - //vEInstrDetailVODetail.setNo3("10"); /* 10-횟수, 20-인원 */ - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no2 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no2); - - model.addAttribute("list_no2",selectAsgnmInfoT2List_no2); - } - - - //통계- ③대상별 교육의뢰현황(그래프 포함) - { - //vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */ - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3); - - model.addAttribute("list_no3",selectAsgnmInfoT2List_no3); - } - - - //통계- ④검찰청별 교육 수료 현황(그래프 포함) - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기 - List selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail); - - model.addAttribute("list_no4",selectAsgnmInfoT4List_no4); - } - - // ⑤월별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨 - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기 - List selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail); - model.addAttribute("list_no5",selectAsgnmInfoT5List); - } - // ⑥대상별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨 - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기 - List selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail); - model.addAttribute("list_no6",selectAsgnmInfoT6List); - } - // ⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계 - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - //vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기 - List selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail); - model.addAttribute("list_no7",selectAsgnmInfoT7List); - } - //통계- ⑧인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 - /* - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8); - - model.addAttribute("list_no8",selectAsgnmInfoT2List_no8); - } - */ - - - //통계- ⑨도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 - /* - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9); - - model.addAttribute("list_no9",selectAsgnmInfoT2List_no9); - } - */ - return "oprtn/cndtnSspnIdtmt/newEduPrfrmMngList"; - - - } - - /** - * @methodName : instrActvtHstrySignMngList - * @author : 이호영 - * @date : 2023.12.28 - * @description : 직인대장관리(이수증) - 기반 기소 - * @param vEInstrDetailActvtHstryVO - * @param model - * @param request - * @return - * @throws Exception - */ - @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList.do") - public String instrActvtHstrySignAndCmpltCrtfcMngList( - @ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - //LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - -// if (loginVO == null || ssoLoginVO == null) { -// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. -// } - //로그인 처리==================================== - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO); - //2. pageing step2 - vEInstrDetailActvtHstryVO = this.setPagingStep2_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO, paginationInfo); - vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.encrypt(vEInstrDetailActvtHstryVO.getSearchKeyword())); -// List vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignPagingList(vEInstrDetailActvtHstryVO); - List vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO); - - vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm()))); - - //3.pageing step3 - paginationInfo = this.setPagingStep3_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - // 검색어 복호화 - vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword())); - //대상 리스트, 페이징 정보 전달 - model.addAttribute("list", vEInstrDetailActvtHstryVOList); - - - -// return "oprtn/cmm/instrActvtHstrySignMngList"; - return "oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList"; - } - - /** - * 교육실적통계 화면-개별 - */ - @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/newEduPrfrmEAMngList.do") - public String newEduPrfrmEAMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , @ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO - , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail - - , HttpSession session - , ModelMap model - ) throws Exception { - - //LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - - - //설정 년 리스트(과거~올해+1) - List selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO); - model.addAttribute("selectStngYrList", selectStngYrList); - - //차시별 정보 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO); - model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList); - - - //vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 - - - //통계- ①검찰청별 교육 의뢰 현황(그래프 포함) - { - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1); - - model.addAttribute("list_no1",selectAsgnmInfoT2List_no1); - } - - - //통계- ②월별 교육의뢰현황(그래프 포함) - { - //vEInstrDetailVODetail.setNo3("10"); /* 10-횟수, 20-인원 */ - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no2 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no2); - - model.addAttribute("list_no2",selectAsgnmInfoT2List_no2); - } - - - //통계- ③월별 지역별 교육인원(그래프 포함) - { - //vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */ - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3); - - model.addAttribute("list_no3",selectAsgnmInfoT2List_no3); - } - - - //통계- ④월별 강사종류별,강사별 교육횟수(그래프 포함) - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no4 = vEInstrMixService.selectEduPrfrmInfo_tngr_no4(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no4 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no4); - - model.addAttribute("list_no4",selectAsgnmInfoT2List_no4); - } - - // ⑤월별 교육대상별 교육횟수(그래프 포함) - 대상이 없어서 제공안됨 - // ⑥월별 교육대상별 교육횟수(그래프 포함) - 대상이 없어서 제공안됨 - // ⑦월별 교육대상별 교육인원(그래프 포함) - 대상이 없어서 제공안됨 - { - //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no5_no_6_no7 = vEInstrMixService.selectEduPrfrmInfo_adult_no5_no6_no7(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no5_no_6_no7 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no5_no_6_no7); - - model.addAttribute("list_no5_no6_no7",selectAsgnmInfoT2List_no5_no_6_no7); - } - //통계- ⑧인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 - /* - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8); - - model.addAttribute("list_no8",selectAsgnmInfoT2List_no8); - } - */ - - - //통계- ⑨도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 - /* - { - vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); - List selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail); - - //복호화 - selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9); - - model.addAttribute("list_no9",selectAsgnmInfoT2List_no9); - } - */ - return "oprtn/cndtnSspnIdtmt/newEduPrfrmEAMngList"; - - - } - - /** - * 교육실적통계 Excel - 조건부기소유예 - ①검찰청별 교육 의뢰 현황(그래프 포함) - * @param model - * @return - * @throws Exception - */ - @SuppressWarnings("rawtypes") - @RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no1.do") - public ModelAndView eduPrfrmMngExcelDownLoad_csi_no1( - @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); - List selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - List 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 - 조건부기소유예 - 2검찰청별 교육 의뢰 현황(그래프 포함) - * @param model - * @return - * @throws Exception - */ - @SuppressWarnings("rawtypes") - @RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no2.do") - public ModelAndView eduPrfrmMngExcelDownLoad_csi_no2( - @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); - List selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - selectAsgnmInfoT2List.get(12).setCodeNm("합계"); - - List 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_no3.do") - public ModelAndView eduPrfrmMngExcelDownLoad_csi_no3( - @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); - List selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - selectAsgnmInfoT3List.get(2).setCodeNm("합계"); - - List 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; - } - - /** - * 교육실적통계 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 selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - List 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 selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - selectAsgnmInfoT2List.get(12).setCodeNm("합계"); - - List excelData = new ArrayList<>(); - excelData.addAll(selectAsgnmInfoT2List); - - - // 세팅값 - String title = "교육실적통계-월별 교육 이수 현황"; - int[] width = { - - 4000, 4000, 4000 - - }; // 너비 - - //33개 항목 - String[] header = { - - "월" - , "이수(명)" - , "횟수" - - }; - - String[] order = { - - "CodeNm" - , "Cnt" - , "Cnt2" - - }; - - 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_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 selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - //selectAsgnmInfoT2List.get(12).setCodeNm("합계"); - - List 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 - * @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 selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail); - - //복호화 - //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); - - System.out.println("out-list-2"); - - - selectAsgnmInfoT3List.get(2).setCodeNm("합계"); - - List 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; - } - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // - // private function - // - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEPrcsDetailVO p_vEPrcsDetailVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit()); - paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize()); - - return paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEPrcsDetailVO setPagingStep2( - VEPrcsDetailVO p_vEPrcsDetailVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - /* - if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord"); - p_vEPrcsDetailVO.setSearchSortOrd("desc"); - } - */ - - return p_vEPrcsDetailVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEPrcsDetailVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1_VEInstrDetailActvtHstryVO( - VEInstrDetailActvtHstryVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEInstrDetailActvtHstryVO setPagingStep2_VEInstrDetailActvtHstryVO( - VEInstrDetailActvtHstryVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3_VEInstrDetailActvtHstryVO( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setInstrPagingStep3( - List p_vEInstrDetailVOList - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEInstrDetailVOList.size() > 0) totCnt = p_vEInstrDetailVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1_vEEduAplctVO( - VEEduAplctVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEEduAplctVO setPagingStep2_vEEduAplctVO( - VEEduAplctVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3_vEEduAplctVO( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - @SuppressWarnings("unused") - private void excelDown( - List list, - String title, - int[] width, - String[] header, - String[] order, - ModelMap model - ){ - // 호출 - SXSSFWorkbook workbook; - try { - workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title); - model.addAttribute("locale", Locale.KOREA); - model.addAttribute("workbook", workbook); - model.addAttribute("workbookName", title); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } -} diff --git a/src/main/java/kcc/ve/oprtn/prevent/web/PreventMngController.java b/src/main/java/kcc/ve/oprtn/prevent/web/PreventMngController.java index c22c1473..23d4fd37 100644 --- a/src/main/java/kcc/ve/oprtn/prevent/web/PreventMngController.java +++ b/src/main/java/kcc/ve/oprtn/prevent/web/PreventMngController.java @@ -709,9 +709,10 @@ public class PreventMngController { //vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 + - - //통계- ①검찰청별 교육 의뢰 현황(그래프 포함) + /* + //통계- ①검찰청별 교육 의뢰 현황(그래프 포함) { //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); @@ -726,7 +727,7 @@ public class PreventMngController { //통계- ②월별 교육의뢰현황(그래프 포함) { - //vEInstrDetailVODetail.setNo3("10"); /* 10-횟수, 20-인원 */ + //vEInstrDetailVODetail.setNo3("10"); * 10-횟수, 20-인원 * //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); List selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail); @@ -739,8 +740,9 @@ public class PreventMngController { //통계- ③대상별 교육의뢰현황(그래프 포함) - { - //vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */ + { + // * 10-횟수, 20-인원 * + //vEInstrDetailVODetail.setNo3("20"); //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); List selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail); @@ -760,14 +762,18 @@ public class PreventMngController { model.addAttribute("list_no4",selectAsgnmInfoT4List_no4); } + */ // ⑤월별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨 { + vEInstrDetailVODetail.setLctrDivCd(LCTR_DIV_CD); vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기 - List selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail); + List selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail); model.addAttribute("list_no5",selectAsgnmInfoT5List); } + + /* // ⑥대상별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨 { vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); @@ -782,6 +788,7 @@ public class PreventMngController { List selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail); model.addAttribute("list_no7",selectAsgnmInfoT7List); } + */ //통계- ⑧인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 /* { @@ -813,6 +820,87 @@ public class PreventMngController { } + /** + * 교육실적통계 Excel - 조건부기소유예 - 5검찰청별 교육 이수 현황(그래프 포함) + * @param model + * @return + * @throws Exception + */ + @SuppressWarnings("rawtypes") + @RequestMapping(value = "/kccadr/oprtn/prevent/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 selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail); + + //복호화 + //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); + + System.out.println("out-list-2"); + + + selectAsgnmInfoT2List.get(12).setCodeNm("합계"); + + List excelData = new ArrayList<>(); + excelData.addAll(selectAsgnmInfoT2List); + + + // 세팅값 + String title = "교육실적통계-월별 교육 이수 현황"; + int[] width = { + + 4000, 4000, 4000 + + }; // 너비 + + //33개 항목 + String[] header = { + + "월" + , "이수(명)" + , "횟수" + + }; + + String[] order = { + + "CodeNm" + , "Cnt" + , "Cnt2" + + }; + + excelDown( + excelData, + title, + width, + header, + order, + model + ); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + modelAndView.addObject(model); + + return modelAndView; + } + /** * @methodName : instrActvtHstrySignMngList * @author : 이호영 @@ -3294,4 +3382,26 @@ public class PreventMngController { return p_paginationInfo; } + + @SuppressWarnings("unused") + private void excelDown( + List list, + String title, + int[] width, + String[] header, + String[] order, + ModelMap model + ){ + // 호출 + SXSSFWorkbook workbook; + try { + workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } diff --git a/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml b/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml index 4373b919..94e0c363 100644 --- a/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml +++ b/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml @@ -2612,5 +2612,71 @@ on(bbb.codeNm2=ccc.prcs_aplct_prd_ord) ORDER BY aaa.mnt, ccc.title - + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/newEduPrfrmMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/newEduPrfrmMngList.jsp index c162c52e..f754e7e8 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/prevent/newEduPrfrmMngList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/prevent/newEduPrfrmMngList.jsp @@ -211,7 +211,7 @@ -
+