diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdPrcsInfoMngController.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdPrcsInfoMngController.java
new file mode 100644
index 00000000..bf940f0f
--- /dev/null
+++ b/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdPrcsInfoMngController.java
@@ -0,0 +1,2899 @@
+package kcc.ve.oprtn.cmdTrgt.web;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang3.StringUtils;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import egovframework.rte.fdl.cmmn.exception.FdlException;
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import kcc.com.cmm.ComDefaultCodeVO;
+import kcc.com.cmm.ComDefaultVO;
+import kcc.com.cmm.LoginVO;
+import kcc.com.cmm.service.EgovCmmUseService;
+import kcc.com.cmm.service.EgovFileMngService;
+import kcc.com.cmm.service.EgovFileMngUtil;
+import kcc.com.cmm.service.FileVO;
+import kcc.com.cmm.service.impl.CmmUseDAO;
+import kcc.com.cmm.spring.data.util.ExcelUtil;
+import kcc.com.cmm.util.StringUtil;
+import kcc.com.utl.user.service.CheckFileUtil;
+import kcc.com.utl.user.service.CheckLoginUtil;
+import kcc.let.uat.uia.service.SsoLoginVO;
+import kcc.let.uss.notify.service.NotifyManageService;
+import kcc.let.utl.fcc.service.EgovCryptoUtil;
+import kcc.let.utl.fcc.service.ITNotiUtil;
+import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
+import kcc.ve.cmm.VeConstants;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
+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.VEPrcsCntntVO;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
+import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
+import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
+import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
+
+/**
+ * 기반강화연수(관리자)
+ * 기반강화연수에 관한 controller 클래스를 정의한다.
+ * @author 조용준
+ * @since 2023.07.12
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.12.16 조용준 최초 생성
+ *
+ *
+ */
+
+@Controller
+//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
+public class CmdPrcsInfoMngController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CmdPrcsInfoMngController.class);
+
+ private final String LCTR_DIV_CD = "70"; //시정명령(특허청)
+
+ //로그인 체크 util
+ @Resource(name = "checkLoginUtil")
+ private CheckLoginUtil checkLoginUtil;
+
+ //과정 관리
+ @Resource(name = "vEPrcsService")
+ private VEPrcsService vEPrcsService;
+
+ //온라인콘텐츠과정 관리
+ @Resource(name = "vEPrcsOnlnCntntService")
+ private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
+
+
+ //과정 관리
+ @Resource(name = "cndtnTrgtInfoMngService")
+ private CndtnTrgtMngService cndtnTrgtInfoMngService;
+
+ //교육과정순번
+ @Resource(name="prcsGnrService")
+ private EgovIdGnrService prcsGnrService;
+
+ //과정차시 관리
+ @Resource(name = "vEAPrcsAplctPrdInstrAsgnmService")
+ private VEAPrcsAplctPrdInstrAsgnmService vEAPrcsAplctPrdInstrAsgnmService;
+
+ //기소유예대상자
+ @Resource(name="trgtOrdService")
+ private EgovIdGnrService trgtOrdService;
+
+ //과정온라인콘텐츠순번
+ @Resource(name="prcsOnlnGnrService")
+ private EgovIdGnrService prcsOnlnGnrService;
+
+ //과정차시 관리
+ @Resource(name = "vEPrcsAplctPrdService")
+ private VEPrcsAplctPrdService vEPrcsAplctPrdService;
+
+
+ //과정
+ @Resource(name="cmmUseDAO")
+ private CmmUseDAO cmmUseDAO;
+
+ //과정 관리
+ @Resource(name = "vEEduMIXService")
+ private VEEduMIXService vEEduMIXService;
+
+ //암복호화 유틸
+ @Resource(name = "egovCryptoUtil")
+ EgovCryptoUtil egovCryptoUtil;
+
+ //파일정보의 관리
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileService;
+
+ //온라인콘텐츠과정 관리
+ @Resource(name = "sspnIdtmtService")
+ private SspnIdtmtService sspnIdtmtService;
+
+ //과정신청기간순번
+ @Resource(name="prcsAplctPrdGnrService")
+ private EgovIdGnrService prcsAplctPrdGnrService;
+
+ //알림 서비스
+ @Resource(name = "NotifyManageService")
+ private NotifyManageService notifyManageService;
+
+ /** cmmUseService */
+ @Resource(name = "EgovCmmUseService")
+ private EgovCmmUseService egovCmmUseService;
+
+ //알림
+ @Resource(name = "iTNotiUtil")
+ private ITNotiUtil iTNotiUtil;
+
+ //파일 처리 egov
+ @Resource(name="EgovFileMngUtil")
+ private EgovFileMngUtil egovFileMngUtil;
+
+ //파일 체크 util
+ @Resource(name = "checkFileUtil")
+ private CheckFileUtil checkFileUtil;
+
+
+
+ /**
+ * 기반강화연수 과정 관리 목록 화면
+ */
+
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngList.do")
+ public String fndthEduPrcsMngList(
+ @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-조건부
+
+ if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
+ //String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
+ String selectCondition = "AND a.PRCS_NM LIKE '%'||'" +vEPrcsDetailVO.getSearchKeyword() + "'||'%'";
+ vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
+ }
+
+ List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", vEPrcsDetailVOList);
+
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsMngList";
+ }
+
+
+ /**
+ * 기소유예 화면
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngMdfyAjax.do")
+ public ModelAndView fndthEduPrcsMngMdfyAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ , final MultipartHttpServletRequest multiRequest
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //상세교육 첨부파일 체크
+ String atchFileId = "";
+ final Map files = multiRequest.getFileMap();
+ if (!files.isEmpty()) {
+ //XXX_로 첨부파일 네이밍
+ List result = egovFileMngUtil.parseFileInf(files, "DETAILCN_", 0, "", "", "");
+ atchFileId = fileService.insertFileInfs(result);
+ vEPrcsDetailVO.setCnAtchFileId(atchFileId);
+ }
+
+ vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
+ vEPrcsService.update(vEPrcsDetailVO);
+
+
+ //세부과정 지우고 다시 생성
+ VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO();
+ vEPrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd());
+// int iv = vEPrcsOnlnCntntService.deleteAll(vEPrcsCntntVO);
+// String[] s_detailPrcsNm = request.getParameterValues("detailPrcsNm");
+ /*for (int i=0;i vEPrcsCntntList = vEPrcsOnlnCntntService.selectList(vePrcsCntntVO);
+ model.addAttribute("vEPrcsCntntList", vEPrcsCntntList);
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsMngDetail";
+ }
+
+
+
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngReg.do")
+ public String fndthEduPrcsMngReg(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리==================================== so
+
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsMngReg";
+ }
+
+
+ /**
+ * 기소유예 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngRegAjax.do")
+ public ModelAndView fndthEduPrcsMngRegAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+
+ String prcsOrd = prcsGnrService.getNextStringId(); // 고유ID
+ vEPrcsDetailVO.setPrcsOrd(prcsOrd);
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+ vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
+ vEPrcsService.insert(vEPrcsDetailVO);
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+
+
+ /**
+ * 조건부기소유예관리 수정
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngMdfy.do")
+ public String fndthEduPrcsMngMdfy(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ //과정 조회
+ VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsService.selectDetail(vEPrcsDetailVO);
+ model.addAttribute("info", vEPrcsDetailVODetail);
+ //세부과정 목록 조회
+// VEPrcsCntntVO vePrcsCntntVO = new VEPrcsCntntVO();
+// vePrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd());
+// List vEPrcsCntntList = vEPrcsOnlnCntntService.selectList(vePrcsCntntVO);
+// model.addAttribute("vEPrcsCntntList", vEPrcsCntntList);
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsMngMdfy";
+ }
+
+ /**
+ * 조건부기소유예 신청기간 삭제 - useYn-D 처리
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsMngDelAjax.do")
+ public ModelAndView cndtnEduPrcsMngDelAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+
+ VEPrcsDetailVO tvEPrcsDetailVO = new VEPrcsDetailVO();
+ tvEPrcsDetailVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd());
+ tvEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+ //tvEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
+ tvEPrcsDetailVO.setUseYn("D");
+
+ //vEPrcsAplctPrdService.update(tvEPrcsDetailVO);
+
+ vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id
+ vEPrcsService.update(tvEPrcsDetailVO);
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngList.do")
+ public String cndtnEduPrcsAplctMngList(
+ @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-조건부
+
+ if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
+ //String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
+ String selectCondition = "AND b.PRCS_NM LIKE '%'||'" +vEPrcsDetailVO.getSearchKeyword() + "'||'%'";
+ vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
+
+ }
+
+ if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
+ String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
+ vEPrcsDetailVO.setSearchStatusArr(splited);
+ }
+
+ if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
+
+ //vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
+
+ }
+ List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", vEPrcsDetailVOList);
+
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsAplctMngList";
+ ///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
+ }
+
+
+
+ /**
+ * 기소유예 신청기간 등록 화면
+ */
+ //@RequestMapping("eduPrcsMngReg.do")
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngReg.do")
+ public String cndtnEduPrcsAplctMngReg(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ System.out.println("로그인 처리====================================");
+
+ try {
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ System.out.println("로그인 처리====================================8");
+
+ //과정 정보 가져오기
+ {
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
+ //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
+ paginationInfo.setRecordCountPerPage(10000);
+
+ //2. pageing step2
+ vEPrcsDetailVO.setOrderByQuery("a.prcs_nm asc");
+
+ vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
+
+ //기반강화 조회
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+
+ List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+ //model.addAttribute("paginationInfo", paginationInfo);
+
+
+
+ // 교육 부분 코드 가져오는 영역
+ ComDefaultCodeVO codeVO = new ComDefaultCodeVO();
+ codeVO.setCodeId("VEA001");//기관구분코드
+ codeVO.setCode(vEPrcsDetailVOList.get(0).getPrcsDiv());
+ model.addAttribute("prcsDivNm", cmmUseDAO.selectCmmCodeDetailValue(codeVO).getCodeNm());
+
+ // 상세교육과정 내용 가져오는 영역
+ VEPrcsDetailVO vEPrcsDetailVOPrcsCn = new VEPrcsDetailVO();
+ vEPrcsDetailVOPrcsCn.setPrcsOrd(vEPrcsDetailVOList.get(0).getPrcsOrd());
+ model.addAttribute("prcsCn", vEPrcsService.selectDetail(vEPrcsDetailVOPrcsCn).getPrcsCn());
+
+
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("listPrcs", vEPrcsDetailVOList);
+ }
+ System.out.println("로그인 처리====================================2");
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+ System.out.println("로그인 처리====================================3");
+
+
+
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsAplctMngReg";
+
+ }
+
+
+
+ /**
+ * 기소유예 신청기간 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctSelectDivAndCnAjax.do")
+ public ModelAndView cndtnEduPrcsAplctSelectDivAndCnAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+
+ VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsService.selectDetail(vEPrcsDetailVO);
+
+ ComDefaultCodeVO codeVO = new ComDefaultCodeVO();
+ codeVO.setCodeId("VEA001");//기관구분코드
+ codeVO.setCode(vEPrcsDetailVODetail.getPrcsDiv());
+
+
+
+ modelAndView.addObject("result", "success");
+ modelAndView.addObject("prcsDivCd", vEPrcsDetailVODetail.getPrcsDiv());
+ modelAndView.addObject("prcsDiv", cmmUseDAO.selectCmmCodeDetailValue(codeVO)
+ .getCodeNm());
+
+ modelAndView.addObject("prcsCn", vEPrcsDetailVODetail.getPrcsCn());
+
+
+ return modelAndView;
+
+ }
+
+
+
+ /**
+ * 기소유예 신청기간 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngRegAjax.do")
+ public ModelAndView cndtnEduPrcsAplctMngRegAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+
+ String prcsOrd = prcsGnrService.getNextStringId(); // 고유ID
+ vEPrcsDetailVO.setPrcsOrd(prcsOrd);
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+ vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
+ vEPrcsService.insert(vEPrcsDetailVO);
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+
+ /**
+ * 기소유예 신청기간 등록
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngRegAjax.do")
+ public ModelAndView cndtnEduPrcsAplctPrdMngRegAjax(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ //, RedirectAttributes redirectAttributes
+ , HttpServletRequest request
+ , final MultipartHttpServletRequest multiRequest
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) {
+ modelAndView.addObject("result", "loginFail");
+ return modelAndView;
+ }
+
+ //로그인 처리====================================
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+
+
+ //step2.파일 처리====================================
+ //파일 정상 처리 여부와 첨부 파일 정보
+ //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
+ //파일 제한 수량 가져오기, 없으면 기본값 사용
+ int i_file_limit = checkFileUtil.getLimitCount(request); // file count
+ int i_limit_size = checkFileUtil.getLimitSize(request); // file MB
+ String s_file_exts = checkFileUtil.getS_exts(); // file exts
+
+ String atchFileId = checkFileUtil.fileValCheckNdbInsert(
+ multiRequest, modelAndView
+ , "APLCT_" //file_name_prefix
+ , s_file_exts
+ , i_limit_size
+ , i_file_limit
+ ); //EXT, MB size and ea
+
+ if ("ERROR".equals(atchFileId)) return modelAndView;
+
+
+
+
+
+
+
+
+
+ vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+ vEPrcsDetailVO.setUseYn("Y");
+ String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID
+ vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd);
+ vEPrcsDetailVO.setAtchFileId(atchFileId);
+
+ vEPrcsAplctPrdService.insert(vEPrcsDetailVO);
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+
+ }
+
+ /**
+ * 조건부기소유예 기간 상세화면
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngDetail.do")
+ public String cndtnEduPrcsAplctPrdMngDetail(
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //과정 조회
+ VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
+ model.addAttribute("info", vEPrcsDetailVODetail);
+
+ //과정 신청자 정보 가져오기
+ {
+ //해당 과정을 제출한 사용자 정보를 가져온다.
+ VEEduAplctVO paramVO = new VEEduAplctVO();
+ paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
+ paramVO.setSbmtYn("Y");
+
+ // 검색 - 날짜
+ paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
+ paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
+ // 검색 - 검색어
+ paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
+ paramVO.setSearchSelStatus(vEPrcsDetailVO.getSearchSelStatus());
+
+
+
+// List vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
+ List vEPrcsDetailVOList = vEEduMIXService.selectCndtnList(paramVO);
+ vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("listPrcsAplct", vEPrcsDetailVOList);
+ }
+
+ // 강사 배치 정보
+ {
+
+ System.out.println("====");
+ List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
+ List instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList);
+
+ model.addAttribute("instrAsgnmList", instrAsgnmList);
+ }
+
+ return "/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngDetail";
+ }
+
+
+ /**
+ * 성인찾아가는 저작권 교육 목록 Excel
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @SuppressWarnings("rawtypes")
+ @RequestMapping(value = "/kccadr/oprtn/cmdTrgt/eduAplctExcelDownLoad.do")
+ public ModelAndView eduAplctExcelDownLoad(@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO, ModelMap model) throws Exception {
+
+ // 요청, 반려건
+ try {
+
+ VEEduAplctVO paramVO = new VEEduAplctVO();
+ paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
+ paramVO.setSbmtYn("Y");
+
+ // 검색 - 날짜
+ paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
+ paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
+ // 검색 - 검색어
+ paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
+
+
+
+ List list = vEEduMIXService.selectCndtnList(paramVO);
+ list = egovCryptoUtil.decryptVeEduAplctList(list);
+
+ List excelVOList = new ArrayList<>();
+
+ // util에서 vo의 모든 변수를 순회하기 때문에 느림
+ // 필요한 변수들만 vo로 선언
+ list.forEach( vo -> {
+ ExcelVO excelVO = new ExcelVO();
+
+ excelVO.setRowNoStr(Integer.toString(vo.getRowNo()));
+ excelVO.setVntNmbr(vo.getVntYear() +"형제"+ vo.getVntNmbr());
+ excelVO.setCmptntAthrt(vo.getCmptntAthrt());
+ excelVO.setTitle(vo.getTitle());
+ excelVO.setPrcsNm(vo.getPrcsNm());
+ excelVO.setUserNm(vo.getUserNm());
+ excelVO.setEmail(vo.getEmail());
+ excelVO.setPhone(vo.getPhone());
+ excelVO.setSbmtPnttm(vo.getSbmtPnttm());
+ excelVO.setTrgtSex(vo.getTrgtSex());
+ excelVO.setDBirth(vo.getDBirth());
+ excelVO.setTrgtNm(vo.getTrgtNm());
+ excelVO.setPrsctrNm(vo.getPrsctrNm());
+ excelVO.setReqNmbr(vo.getReqNmbr());
+
+ ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
+ codeParam.setCodeId("VE0003");
+ codeParam.setCode(vo.getAprvlCd());
+ excelVO.setAprvlCd(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam));
+
+ //ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
+ codeParam.setCodeId("VEA008");
+ codeParam.setCode(vo.getCmptntAthrt());
+ excelVO.setCmptntAthrt(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam));
+
+ System.out.println(excelVO.getPrcsNm());
+
+ excelVOList.add(excelVO);
+ });
+
+
+
+
+
+ List