From fc397313c224dc706461fcf9f18a32af2963281b Mon Sep 17 00:00:00 2001 From: myname Date: Mon, 15 Sep 2025 16:09:10 +0900 Subject: [PATCH] 2025-09-15 16:10 --- .../cmdTrgt/web/CmdPrcsInfoMngController.java | 2899 +++++++++++++++++ .../trgtMng/web/CmdTrgtMngController.java | 4 +- .../jsp/oprtn/cmdTrgt/cndtnEduPrcsMngList.jsp | 322 ++ .../WEB-INF/jsp/oprtn/cmdTrgt/trgtDetail.jsp | 796 +++++ .../WEB-INF/jsp/oprtn/cmdTrgt/trgtMngMdfy.jsp | 590 ++++ 5 files changed, 4609 insertions(+), 2 deletions(-) create mode 100644 src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdPrcsInfoMngController.java create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsMngList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtMngMdfy.jsp 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 excelData = new ArrayList<>(); + excelData.addAll(excelVOList); + // 세팅값 + String title = "조건부 기소유예 - 교육신청 목록"; + int[] width = { + 2000, 4000, 4000, 4000, 4000 + , 4000, 4000, 4000 + , 4000, 4000, 4000, 4000, 4000 + }; // 너비 + + String[] header = { + "순번", "신청자", "이메일", "핸드폰", "생년월일" + , "성별", "신청일", "상태" + , "관할청", "사건번호", "담당검사", "교육명", "의뢰번호" + }; + + String[] order = { + "RowNoStr", "TrgtNm", "Email", "Phone", "DBirth" + , "TrgtSex", "SbmtPnttm", "AprvlCd" + , "CmptntAthrt", "VntNmbr", "PrsctrNm", "Title", "ReqNmbr" + }; + + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + modelAndView.addObject(model); + + return modelAndView; + } + + /** + * ve_prcs_aplct_prd 테이블에 데이터 하나만 변경하는 기능 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateDdlnCdAjax.do") + public ModelAndView updateDdlnCdAjax( + @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 prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID + //vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); + vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + //vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + //교육과정 상태 업데이트 + vEPrcsAplctPrdService.updateOneColumn(vEPrcsDetailVO); + + //신청 상태 와 대상자 상태 업데이트 + List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectTrgtList4_60(vEPrcsDetailVO); + + for (int i=0;i 상세 > 취소요청 > 팝업 > 승인 및 반려 + * 반려일 경우 VE_EDU_APLCT 테이블에 update 안함 + * @param vEEduAplctVO + * @param model + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctStateCdAjax_only.do") + public ModelAndView updateAplctStateCdAjax_only( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , 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 로그인 정보 가져오기 + + + vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId()); + //vEPrcsDetailVO.setUseYn("Y"); + // VEA_APLCT_DETAIL_INFO 신청상세정보 상태값 update + vEEduMIXService.updateAplctStateCd(vEEduAplctVO); + + // 취소 반려처리시 타면 안됨 + //VE_EDU_APLCT UPDATE + if(StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) + { + sspnIdtmtService.updateAprvlCd(vEEduAplctVO); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + + /** + * 조건부기소유예 기간 상세화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngDetail.do") + public String cndtnEduPrcsAplctCfnMngDetail( + @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()); + + if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) { + + //String searchQuery = "AND vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus(); + String searchQuery = "AND vsit.edu_state_cd = "+vEPrcsDetailVO.getSearchStatus(); + + + + paramVO.setSearchQuery(searchQuery); + } + + + paramVO.setSiteId("60"); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소 + List vEPrcsDetailVOList = vEEduMIXService.selectTrgtList4Cmplt(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/cndtnEduPrcsAplctCfnMngDetail"; + } + + + /** + * 기소유예 이수 / 미이수 상태 변경 처리 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctStateCdAjax.do") + public ModelAndView updateAplctStateCdAjax( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView("jsonView"); + + try { + //로그인 처리==================================== + //로그인 정보 가져오기 + + 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 로그인 정보 가져오기 + + + // 이수 상태라면 이수번호 생성 + if("20".equals(vEEduAplctVO.getAplctStateCd())) { + vEEduAplctVO.setEduCmpltCrtfcNmbr(this.cmpltChkAndMakeNmber(vEEduAplctVO.getLctrDivCd())); + }else if("10".equals(vEEduAplctVO.getAplctStateCd())) { //이미수 + vEEduAplctVO.setEduCmpltCrtfcNmbr("DEL"); + vEEduAplctVO.setEduStateCd("40"); + }else if("60".equals(vEEduAplctVO.getAplctStateCd())) { //연기 + vEEduAplctVO.setEduCmpltCrtfcNmbr("DEL"); + vEEduAplctVO.setEduStateCd("50"); + } + + // 신청상세정보 상태값 update + vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId()); + vEEduMIXService.updateAplctStateCd(vEEduAplctVO); + + + // 기소유예 대상자 상태값 udpate + vEEduMIXService.updateEduStateCd(vEEduAplctVO); + + + // 알림 영역 + // 알림 영역 + // 알림 영역 + List eduAplctOrdList = new ArrayList(); + eduAplctOrdList.add(vEEduAplctVO.getEduAplctOrd()); + vEEduAplctVO.setEduAplctOrdList(eduAplctOrdList); + notifyManageService.insertNotifyAprvlCd5060CmpltForUser( + loginVO + , vEEduAplctVO.getPrcsAplctPrdOrd() + , vEEduAplctVO.getLctrDivCd() + , vEEduAplctVO.getEduAplctOrdList() + , vEEduAplctVO.getAplctStateCd() + ); + + + + modelAndView.addObject("result", "success"); + } catch (Exception e) { + modelAndView.addObject("result", ""); + } + + + + + return modelAndView; + + } + + /** + * @methodName : updateAplctStateCdAjax + * @author : 이호영 + * @date : 2024.01.11 + * @description : 연기상태 udpate + * @param vEEduAplctVO + * @param model + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctEmailAjax.do") + public ModelAndView updateAplctEmailAjax( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView("jsonView"); + + try { + //로그인 처리==================================== + //로그인 정보 가져오기 + + 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 로그인 정보 가져오기 + + // 기소유예 대상자 상태값 udpate + vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); + vEEduMIXService.updateAplctEmail(vEEduAplctVO); + + + modelAndView.addObject("result", "success"); + } catch (Exception e) { + modelAndView.addObject("result", ""); + } + + + + + return modelAndView; + + } + + /** + * @methodName : updateAplctStateCdAjax + * @author : 이호영 + * @date : 2024.01.11 + * @description : 연기상태 udpate + * @param vEEduAplctVO + * @param model + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctStateCdOnlyAjax.do") + public ModelAndView updateAplctStateCdOnlyAjax( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView("jsonView"); + + try { + //로그인 처리==================================== + //로그인 정보 가져오기 + + 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 로그인 정보 가져오기 + + // 기소유예 대상자 상태값 udpate + vEEduMIXService.updateEduStateCd(vEEduAplctVO); + + + // 알림 영역 + // 알림 영역 + // 알림 영역 + List eduAplctOrdList = new ArrayList(); + eduAplctOrdList.add(vEEduAplctVO.getEduAplctOrd()); + vEEduAplctVO.setEduAplctOrdList(eduAplctOrdList); + notifyManageService.insertNotifyAprvlCd5060CmpltForUser( + loginVO + , vEEduAplctVO.getPrcsAplctPrdOrd() + , vEEduAplctVO.getLctrDivCd() + , vEEduAplctVO.getEduAplctOrdList() + , vEEduAplctVO.getAplctStateCd() + ); + + modelAndView.addObject("result", "success"); + } catch (Exception e) { + modelAndView.addObject("result", ""); + } + + + + + return modelAndView; + + } + private String cmpltChkAndMakeNmber(String lctrDivCd) throws Exception { + // 현재 년도 + String currentYear = String.valueOf(java.time.Year.now()); + + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + + vEEduAplctVO.setLctrDivCd(lctrDivCd); + + List vEEduAplctVOList = vEEduMIXService.selectEduCmpltCrtfcNmbrList(vEEduAplctVO); + + // 값이 있으면 있는 값에 최대값 구하고 + // 값이 없으면 초기값 설정 + String maxCrtfcNmbr = vEEduAplctVOList.stream() + .map(VEEduAplctVO::getEduCmpltCrtfcNmbr) + .max(Comparator.comparingInt(item -> Integer.parseInt(item.split("-")[1]))) + .orElse( currentYear + "-00000"); // 기본값 설정 + + int nextNumber = Integer.parseInt(maxCrtfcNmbr.split("-")[1]) + 1; + + return currentYear + "-" + String.format("%05d", nextNumber); + } + + + /** + * 기소유예 신청자 상태값 변경 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateEduAplctAprvlCdAjax.do") + public ModelAndView updateEduAplctAprvlCd( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , 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(); //권한에 따른 로그인 정보 가져오기 + + try { + // 교육 신청 테이블에 신청자 상태값 update + vEAPrcsAplctPrdInstrAsgnmService.udpateAprvlCdEduAplct(vEPrcsDetailVO); + + /*var dataToSend = { + "eduAplctOrdList": selectedEduAplctOrd, + "aprvlCd": p_aprvlCd, + "prcsAplctPrdOrd": p_prcsAplctPrdOrd, + "lctrDivCd" : $("#lctrDivCd").val() + }; + */ + + + /* + // 알림 + notifyManageService.insertNotifyAprvlCd5060ForUser( + loginVO + , vEPrcsDetailVO.getPrcsAplctPrdOrd() + , vEPrcsDetailVO.getLctrDivCd() + , vEPrcsDetailVO.getEduAplctOrdList() + , vEPrcsDetailVO.getAprvlCd() + ); + */ + + // 승인 - 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함 + if("20".equals(vEPrcsDetailVO.getAprvlCd())) { + this.aprvlCd20(vEPrcsDetailVO,loginVO.getUniqId()); + + } + // 접수취소(반려) - vea_aplct_detail_info TB에 data update + else if("30".equals(vEPrcsDetailVO.getAprvlCd())) + { + this.aprvlCd30(vEPrcsDetailVO,loginVO.getUniqId()); + + } + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + + /** + * 기소유예 교육확정상세 > 이수/미이수 체크버튼 처리 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctStateCdListAjax.do") + public ModelAndView updateAplctStateCdListAjax( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , 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(); //권한에 따른 로그인 정보 가져오기 + + try { + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); + + +// if("20".equals(vEPrcsDetailVO.getAplctStateCd())) { +// vEPrcsDetailVO.setEduCmpltCrtfcNmbr(this.cmpltChkAndMakeNmber(vEPrcsDetailVO.getLctrDivCd())); +// } +// + + String eduCmpltCrtfcNmbr = ""; + String currentYear = String.valueOf(java.time.Year.now()); + if("20".equals(vEPrcsDetailVO.getAplctStateCd()) + || "10".equals(vEPrcsDetailVO.getAplctStateCd()) + || "60".equals(vEPrcsDetailVO.getAplctStateCd()) + ) { + + int j=0; + for(String eduAplctOrd : vEPrcsDetailVO.getEduAplctOrdList()) { + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + + vEEduAplctVO.setAplctStateCd(vEPrcsDetailVO.getAplctStateCd()); + vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId()); + vEEduAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + vEEduAplctVO.setEduAplctOrd(eduAplctOrd); + vEEduAplctVO.setLctrDivCd(vEPrcsDetailVO.getLctrDivCd()); + + String s_sspnIdtmtTrgtOrd = vEPrcsDetailVO.getSspnIdtmtTrgtOrdList().get(j); + j++; + + vEEduAplctVO.setSspnIdtmtTrgtOrd(s_sspnIdtmtTrgtOrd); + + /* + if(StringUtils.isEmpty(eduCmpltCrtfcNmbr)) { + + eduCmpltCrtfcNmbr = this.cmpltChkAndMakeNmber(vEPrcsDetailVO.getLctrDivCd()); + }else { + eduCmpltCrtfcNmbr = currentYear + "-" + String.format("%05d", Integer.parseInt(eduCmpltCrtfcNmbr.split("-")[1])+1); + } + vEEduAplctVO.setEduCmpltCrtfcNmbr(eduCmpltCrtfcNmbr); + + vEEduMIXService.updateAplctStateCd(vEEduAplctVO); + */ + + + if("20".equals(vEEduAplctVO.getAplctStateCd())) { + vEEduAplctVO.setEduCmpltCrtfcNmbr(this.cmpltChkAndMakeNmber(vEEduAplctVO.getLctrDivCd())); + vEEduAplctVO.setEduStateCd("20"); + }else if("10".equals(vEEduAplctVO.getAplctStateCd())) { //이미수 + vEEduAplctVO.setEduCmpltCrtfcNmbr("DEL"); + vEEduAplctVO.setEduStateCd("40"); + }else if("60".equals(vEEduAplctVO.getAplctStateCd())) { //연기 + vEEduAplctVO.setEduCmpltCrtfcNmbr("DEL"); + vEEduAplctVO.setEduStateCd("50"); + } + + // 신청상세정보 상태값 update + vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId()); + vEEduMIXService.updateAplctStateCd(vEEduAplctVO); + + + // 기소유예 대상자 상태값 udpate + vEEduMIXService.updateEduStateCd(vEEduAplctVO); + + } + /* + }else { + vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO); + */ + + } + + notifyManageService.insertNotifyAprvlCd5060CmpltForUser( + loginVO + , vEPrcsDetailVO.getPrcsAplctPrdOrd() + , vEPrcsDetailVO.getLctrDivCd() + , vEPrcsDetailVO.getEduAplctOrdList() + , vEPrcsDetailVO.getAprvlCd() + ); + + + + + + // 교육 신청 테이블에 신청자 상태값 update + /* + if(vEPrcsDetailVO.getSspnIdtmtTrgtOrdList() != null && !vEPrcsDetailVO.getSspnIdtmtTrgtOrdList().isEmpty()) + { + // 대상자 테이블에 update + vEAPrcsAplctPrdInstrAsgnmService.updateEduStateCdListAjax(vEPrcsDetailVO); + } + */ + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + /** + * 기소유예 교육확정상세 > 강의만족도 제출 요청 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateAplctQustnrAjax.do") + public ModelAndView updateAplctQustnrAjax( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , 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(); //권한에 따른 로그인 정보 가져오기 + + try { + + for(String eduAplctOrd : vEPrcsDetailVO.getEduAplctOrdList()) { + + //결과보고서 제출 알림 + try { + iTNotiUtil.insertNotifyNew_60( + "50", + loginVO.getUniqId(), + VeConstants.NOTI_STATUS_61, + vEPrcsDetailVO.getPrcsAplctPrdOrd(), + eduAplctOrd, + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + } + + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + /** + * 기소유예 기간 상세화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngDetail.do") + public String cndtnEduPrcsAplctMngDetail( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 정보 가져오기 + /* + { + //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-조건부 + + vEPrcsDetailVO.setPrcsOrd(""); + + List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + //model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("listPrcs", vEPrcsDetailVOList); + } + */ + + //과정 조회 + VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO); + model.addAttribute("info", vEPrcsDetailVODetail); + + //과정 신청자 정보 가져오기 + { + //해당 과정을 제출한 사용자 정보를 가져온다. + VEEduAplctVO paramVO = new VEEduAplctVO(); + paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + paramVO.setSbmtYn("Y"); + + List vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO); + vEPrcsDetailVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEPrcsDetailVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("listPrcsAplct", vEPrcsDetailVOList); + } + + // 강사 배치 정보 + { + + List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + List instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList); + + model.addAttribute("instrAsgnmList", instrAsgnmList); + } + + return "/oprtn/cmdTrgt/cndtnEduPrcsAplctMngDetail"; + } + + + /** + * 기소유예 기간 상세수정화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngMdfy.do") + public String fndthEduPrcsAplctPrdMngMdfy( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 정보 가져오기 + { + //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-조건부 + + vEPrcsDetailVO.setPrcsOrd(""); + + List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + //model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("listPrcs", vEPrcsDetailVOList); + } + + //과정 조회 + VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO); + model.addAttribute("info", vEPrcsDetailVODetail); + + return "/oprtn/cmdTrgt/cndtnEduPrcsAplctMngMdfy"; + } + + /** + * 기소유예 신청기간 수정 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctMngMdfyAjax.do") + public ModelAndView fndthEduPrcsAplctPrdMngMdfyAjax( + @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 prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID + //vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); + vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + //vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + vEPrcsAplctPrdService.update(vEPrcsDetailVO); + + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + + + /** + * @methodName : fndthInstrAsgnmPopup + * @author : 이호영 + * @date : 2024.01.11 + * @description : 대상자목록에서 강제 배정하는 popup + * @param vEPrcsDetailVO + * @param model + * @param redirectAttributes + * @param session + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cndtnEduAsgnmPopup.do") + public String cndtnEduAsgnmPopup( +// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) 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-학부모 + + } + + // 값만 존재하면됨 + // popup일떄 접수중인것만 표시 + vEPrcsDetailVO.setPopup("true"); + List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEPrcsDetailVOList); + + return "/oprtn/cmdTrgt/popup/cndtnEduAsgnmPopup"; + } + + + /** + * 1.기반강화 강사배치 팝업 function + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cndtnInstrAsgnmPopup.do") + public String fndthInstrAsgnmPopup( +// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + + System.out.println("vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd()); + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); + + + //2. pageing step2 + vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); + + //3. SelectPagingListQuery set 할 조건 설정 + String selectCondition = new String(); + //사용중인 경우만 + selectCondition += "AND a.use_yn = 'Y' "; + //위촉상태인 경우만 + selectCondition += "AND COALESCE(a.qlfct_end_yn, 'N') = 'N' "; + + //3.1 제출 완료 후 사용중인 데이터 조회 + //selectCondition += "AND a.sbmt_yn='Y' AND a.use_yn = 'Y'"; + //3.2 강사 테이블 성인강사여부 Y인것만 조회 + //selectCondition += "AND (b.adult_instr_yn ='Y' OR a.qlfct_end_yn = 'Y') "; + //3.3 이름 검색 시 + if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){ + //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')"; + //이름 암호화 - comDefaultVO 검색단어 공통 암호화 + ComDefaultVO comDefaultVO = new ComDefaultVO(); + comDefaultVO.setSearchKeyword(vEPrcsDetailVO.getSearchKeyword()); + comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO); + vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword()); + selectCondition += "AND a.instr_nm LIKE '%'|| '" +vEPrcsDetailVO.getSearchKeyword() + "'|| '%'"; + comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO); + vEPrcsDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword()); + } + //3.4 요청일 시작일 검색 시 +// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchStartDt())){ +// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') >= REPLACE('"+vEPrcsDetailVO.getSearchStartDt()+"', '.', '')"; +// } + //3.5 요청일 종료일 검색 시 +// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchEndDt())){ +// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <= REPLACE('"+vEPrcsDetailVO.getSearchEndDt()+"', '.', '')"; +// } + vEPrcsDetailVO.setInstrDiv("20"); + vEPrcsDetailVO.setSelectPagingListQuery(selectCondition); + + List vEInstrDetailVOList = vEPrcsAplctPrdService.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO); + + try { + + vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //4.pageing step3 + paginationInfo = this.setInstrPagingStep3(vEInstrDetailVOList, paginationInfo); + System.out.println(" ==== vEPrcsDetailVO.getPrcsAplctPrdOrd() :"+ vEPrcsDetailVO.getPrcsAplctPrdOrd()); + model.addAttribute("vEPrcsDetailVO", vEPrcsDetailVO); + model.addAttribute("paginationInfo", paginationInfo); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEInstrDetailVOList); + + return "/oprtn/cmdTrgt/popup/cndtnInstrAsgnmPopup"; + } + + /** + * @methodName : cnclPopup + * @author : 이호영 + * @date : 2023.11.09 + * @description : 취소 정보 확인하는 팝업 + * @param vEPrcsDetailVO + * @param model + * @param redirectAttributes + * @param session + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cnclPopup.do") + public String cnclPopup( +// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO + @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 info = vEPrcsAplctPrdService.findByCnclInfo(vEPrcsDetailVO); + + + + //파일 정보 가져오기 +// FileVO fileVO = new FileVO(); +// fileVO.setAtchFileId(info.getCnclAtchFileId()); +// List result = fileService.selectFileInfs(fileVO); +// model.addAttribute("fileList", result); +// model.addAttribute("fileListCnt", result.size()); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("info", info); + + return "/oprtn/cmdTrgt/popup/cnclPopup"; + } + + + + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/detailPopup.do") + public String detailPopup( +// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO + @ModelAttribute("vEPrcsDetailVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.findByEduAplctOrdAndMberId(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + //이력정보 + List cndtnTrgtMngVOList = cndtnTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "/oprtn/cmdTrgt/popup/detailPopup"; + } + + /** + * @methodName : cnclPopup + * @author : 이호영 + * @date : 2023.11.09 + * @description : 취소 정보 입력 팝업 + * @param vEPrcsDetailVO + * @param model + * @param redirectAttributes + * @param session + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/cnclStatusPopup.do") + public String cnclStatusPopup( +// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO + @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 info = vEPrcsAplctPrdService.findByCnclInfo(vEPrcsDetailVO); + + System.out.println("====================="); + System.out.println("===================== :: "+ vEPrcsDetailVO.getSspnIdtmtTrgtOrdList().toString()); + + //파일 정보 가져오기 +// FileVO fileVO = new FileVO(); +// fileVO.setAtchFileId(info.getCnclAtchFileId()); +// List result = fileService.selectFileInfs(fileVO); +// model.addAttribute("fileList", result); +// model.addAttribute("fileListCnt", result.size()); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("loginId", loginVO.getId()); + + return "/oprtn/cmdTrgt/popup/cnclStatusPopup"; + } + + /** + * 강사배정 등록 처리 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnInstrAsgnmAjax.do") + public ModelAndView instrAsgnmAjaxinstrAsgnmAjax( + @ModelAttribute("vEAPrcsAplctPrdInstrAsgnmVO") VEAPrcsAplctPrdInstrAsgnmVO vEAPrcsAplctPrdInstrAsgnmVO + , 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(); //권한에 따른 로그인 정보 가져오기 + + try { + //선택한 강사 데이터 등록 처리 + vEAPrcsAplctPrdInstrAsgnmVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + vEAPrcsAplctPrdInstrAsgnmService.instrInsert(vEAPrcsAplctPrdInstrAsgnmVO); + + //알림 + //notifyManageService.insertNotifyForInstr5060(loginVO, vEAPrcsAplctPrdInstrAsgnmVO.getPrcsAplctPrdOrd(), vEAPrcsAplctPrdInstrAsgnmVO.getAsgnmAprvlCd(), vEAPrcsAplctPrdInstrAsgnmVO.getUserId()); + + //알림 교육신청 + try { + iTNotiUtil.insertNotifyNew_60( + "60", + loginVO.getUniqId(), + VeConstants.NOTI_STATUS_100, + vEAPrcsAplctPrdInstrAsgnmVO.getPrcsAplctPrdOrd(), + vEAPrcsAplctPrdInstrAsgnmVO.getUserId(), + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngList.do") + public String cndtnEduPrcsAplctPrdMngList( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + //사전처리 작업 시작==================================== + //vea_aplct_detail_info 테이블에 대상자 순번 값을 넣어서 신청자가 어떤 대상자인지 매핑시킨다. + vEPrcsAplctPrdService.updateSspnIdtmtTrgt(vEPrcsDetailVO); + //사전처리 작업 끝==================================== + + + + //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/cndtnEduPrcsAplctPrdMngList"; + } + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngList.do") + public String cndtnEduPrcsAplctCfnMngList( + @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"); + + 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.selectCfnPagingList4Fndth(vEPrcsDetailVO); + + //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())); + } + + }); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEPrcsDetailVOList); + + + return "oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngList"; + } + + + /** + * 기소유예 신청기간 등록 화면 + */ + //@RequestMapping("eduPrcsMngReg.do") + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngReg.do") + public String cndtnEduPrcsAplctPrdMngReg( + @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.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("prcsDiv", 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); + } + + + + return "oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngReg"; + } + + + /** + * 조건부기소유예 기간 상세수정화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngMdfy.do") + public String cndtnEduPrcsAplctPrdMngMdfy( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + System.out.println("vEPrcsDetailVO.getPrcsDiv() : "+ vEPrcsDetailVO.getPrcsDiv()); + + //과정 정보 가져오기 + { + //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("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + + vEPrcsDetailVO.setPrcsOrd(""); + + List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); + + System.out.println("====="); + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + //model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("listPrcs", vEPrcsDetailVOList); + } + + //과정 조회 + VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO); + + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEPrcsDetailVODetail.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + + ComDefaultCodeVO codeVO = new ComDefaultCodeVO(); + codeVO.setCodeId("VEA001");//기관구분코드 + codeVO.setCode(vEPrcsDetailVODetail.getPrcsDiv()); + model.addAttribute("prcsDivNm", cmmUseDAO.selectCmmCodeDetailValue(codeVO).getCodeNm()); + + + model.addAttribute("info", vEPrcsDetailVODetail); + + return "oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngMdfy"; + } + + + + /** + * 조건부기소유예 신청기간 수정 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngMdfyAjax.do") + public ModelAndView cndtnEduPrcsAplctPrdMngMdfyAjax( + @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; + + + //String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID + //vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); + vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + //vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + vEPrcsDetailVO.setAtchFileId(atchFileId); + + vEPrcsAplctPrdService.update(vEPrcsDetailVO); + + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + /** + * 조건부기소유예 신청기간 삭제 - useYn-D 처리 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduPrcsAplctPrdMngDelAjax.do") + public ModelAndView cndtnEduPrcsAplctPrdMngDelAjax( + @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.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + tvEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + tvEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + tvEPrcsDetailVO.setUseYn("D"); + + vEPrcsAplctPrdService.update(tvEPrcsDetailVO); + + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + + /** + * @methodName : aprvlCd20 + * @author : 이호영 + * @date : 2023.09.25 + * @description : aprvlCd == 20 교육 승인 일 경유 + * 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함 + * @param vEPrcsDetailVO + * @param uniqId + * @throws FdlException + */ + private void aprvlCd20(VEPrcsDetailVO vEPrcsDetailVO, String uniqId) throws FdlException { + + for(String id : vEPrcsDetailVO.getEduAplctOrdList()) { + VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO(); + + vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + vEDetailVO.setEduAplctOrd(id); + + // 데이터가 있는지만 비교하기 위한 구문 + VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO); + + // 데이터가 없으면 Insert + if(vEDetail_DVO == null) { + //vEDetailVO.setAplctStateCd("10"); // 신청상태코드 VEA003 10:미이수 20:이수 + vEDetailVO.setFrstRegisterId(uniqId); + vEAPrcsAplctPrdInstrAsgnmService.insertAprvlCdEduAplctDetail(vEDetailVO); + + } + + + //알림 교육승인 + try { + iTNotiUtil.insertNotifyNew_60( + "60", + uniqId, + VeConstants.NOTI_STATUS_151, + vEPrcsDetailVO.getPrcsAplctPrdOrd(), + id, + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + } + + } + + /** + * @methodName : aprvlCd30 + * @author : 이호영 + * @date : 2023.09.25 + * @description : aprvlCd == 30 교육 반려 + * 반려일 경우 vea_aplct_detail_info TB에 data 삭제 + * @param vEPrcsDetailVO + * @param uniqId + * @throws FdlException + */ + private void aprvlCd30(VEPrcsDetailVO vEPrcsDetailVO, String uniqId) { + + for(String id : vEPrcsDetailVO.getEduAplctOrdList()) { + VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO(); + + vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + vEDetailVO.setEduAplctOrd(id); + + // 데이터가 있는지만 비교하기 위한 구문 + VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO); + + // 데이터가 있으면 삭제 + if(vEDetail_DVO != null) { + // 이호영 20240112 + // 반려값 추가 (VEA003 - 50:반려) +// vEDetailVO.setAplctStateCd("30"); + vEDetailVO.setAplctStateCd("50"); + vEAPrcsAplctPrdInstrAsgnmService.updateAprvlCdEduAplctDetail(vEDetailVO); + + //기소 접수 취소 처리 추가(일부 중복 있지만 동일한 내용이므로 그냥 진행) + /* + int i_ret = 0; + try { + //신청 상태 정보를 가져온다. + VEPrcsDetailVO vEPrcsAplctVO = new VEPrcsDetailVO(); + vEPrcsAplctVO.setEduAplctOrd(id); + vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + + vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO); + + //VEPrcsDetailVO vEPrcsAplctVO = new VEPrcsDetailVO(); + vEPrcsAplctVO.setReqNo("4"); + vEPrcsAplctVO.setLastUpdusrId(uniqId); + + i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO); + + }catch(Exception ex) { + System.out.println(ex.toString()); + } + */ + + + + } + + //알림 교육반려 + try { + iTNotiUtil.insertNotifyNew_60( + "60", + uniqId, + VeConstants.NOTI_STATUS_152, + vEPrcsDetailVO.getPrcsAplctPrdOrd(), + id, + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + } + + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // 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; + } + + + //페이징을 위한 처리 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; + } + +} diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java index d19c1eae..c6d9a007 100644 --- a/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java +++ b/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java @@ -2785,7 +2785,7 @@ public class CmdTrgtMngController { //병합 대상자 검색 조건 추가 String selectCondition = " AND a.prcs_aplct_prd_ord_cmplt IS NULL " //이미 병합 안된 사람 // + " AND 0>=(SELECT count(*) FROM vea_sspn_idmt_trgt WHERE prcs_aplct_prd_ord_cmplt=a.sspn_idtmt_trgt_ord) " //소속 병합이 없어야 함 - + " AND a.sspn_idtmt_trgt_ord!='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "; //본인 제외 + + " AND a.cmd_trgt_info_ord!='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "; //본인 제외 p_cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); @@ -2825,7 +2825,7 @@ public class CmdTrgtMngController { p_cndtnTrgtInfoMngVO.setFirstIndex(0); p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); - p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.sspn_idtmt_trgt_ord =(SELECT prcs_aplct_prd_ord_cmplt FROM vea_sspn_idmt_trgt WHERE sspn_idtmt_trgt_ord='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"') "); + p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.cmd_trgt_info_ord =(SELECT prcs_aplct_prd_ord_cmplt FROM vea_cmd_trgt_info WHERE cmd_trgt_info_ord='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"') "); cndtnTrgtInfoMergeVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); } diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsMngList.jsp new file mode 100644 index 00000000..a15e8ac3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/cndtnEduPrcsMngList.jsp @@ -0,0 +1,322 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +<%pageContext.setAttribute("crlf", "\r\n"); %> +<% + /** + * @Class Name : fndthEduPrcsMngList.jsp + * @Description : 기반강화연수 과정관리 목록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.14 조용준 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + 교육과정관리 + + + + + " /> + " /> + + + +
+ +
    + + +
  • +
  • +
  • + + +
+
+ + +
+

과정관리

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 과정관리
  • +
+
+ + +
+
+ +
+ +
+
+
+ + +
+ +
+ ~ +
+ +
+ + + +
+
+
+ +
+

건의 접수가 검색되었습니다.

+
+ + <%----%> +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
대면구분과정명설명등록일시사용여부
+ + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> +<%-- --%> + + + + + + 사용 + + + 미사용 + +
+
+ + + +
+ +
+
+
+
+
+
+
+ +
+
+ +
+
+
+ + + +
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtDetail.jsp new file mode 100644 index 00000000..5bad007b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtDetail.jsp @@ -0,0 +1,796 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" + pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : cndtnEduPrcsMngDetail.jsp + * @Description : 조건부기소유예 상세화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + +
+ " /> + +
+
+ + +
+ + + + + + + + +
+
+ + +
+

대상자 상세

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 대상자 목록
  • +
  • 대상자 상세
  • +
+
+ + +
+ +
+

대상자 상세

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
의뢰일 +
+
+ + + +<%-- --%> + +
+
+
사건번호 + 형제 +
관할청 + +
성별 + + 연락처 + +
성명 + + 생년월일 + +
의뢰번호 + + 의뢰상태 + + + 병합대상 + + + + + +
교육상태 + + 검사명 + +
+

주소

+
+ + +
+ + +
+
+

첨부파일

+
+ + + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + +
+
+ + +
+

하위 병합 대상자

+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- ');" style="cursor:pointer;"> --%> + +<%-- + + + + + + + + + +<%-- --%> + + + + + + + + + +
의뢰일사건번호관할청생년월일성명성별의뢰번호의뢰상태교육상태주소검사명삭제
');" style="cursor:pointer;"> --%> +<%-- --%> + + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + +<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%> + + + + +
+
+
+ + +
+

상위 중복자

+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- ');" style="cursor:pointer;"> --%> + +<%-- + + + + + + + + + +<%-- --%> + + + + + + + + + +
의뢰일사건번호관할청생년월일성명성별의뢰번호의뢰상태교육상태주소검사명삭제
');" style="cursor:pointer;"> --%> +<%-- --%> + + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + +<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%> + + + + +
+
+
+ + + + + +
+

하위 병합 대상자 검색

+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +<%-- --%> + + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- ');" style="cursor:pointer;"> --%> + +<%-- + + + + + + + + + + +<%-- --%> + + + + + + + + +
의뢰일사건번호관할청생년월일성명성별의뢰번호의뢰상태교육상태주소검사명
');" style="cursor:pointer;"> --%> +<%-- --%> + + + + + + + + + + + + +<%-- --%> + + + 형제 + + + + + + + + + + + + + + + + + +<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%> + + +
+
+ +
+
+
+
+ +
+
+ + + +
+ + +
+

교육이력정보

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
번호교육명교육일확정여부교육상태
+ + + + + + + + + + + + (취소-반려) + +
교육정보가 없습니다.
+
+ + + + + + +
+

비공개 메모

+
+
+ + + + + + + + + + +
+

내용

+
+
+ + +
+
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtMngMdfy.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtMngMdfy.jsp new file mode 100644 index 00000000..ea757c34 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtMngMdfy.jsp @@ -0,0 +1,590 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" + pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : cndtnEduPrcsMngMdfy.jsp + * @Description : 조건부기소유예 수정 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + + + + + + + + + +
+
+ + +
+

대상자 수정

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 대상자 목록
  • +
  • 대상자 수정
  • +
+
+ + +
+ +
+

대상자 수정

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
의뢰일 +
+
+ + " /> +
+
+
의뢰번호 + " /> +
사건번호 + "/>형제 + "/> +
관할청 + <%-- + + --%> + + + + + +
성별 +<%-- " /> --%> + + + 연락처 + " /> +
성명 + " /> + 생년월일 + " /> +
검사명 + " /> + 의뢰상태 + +
교육상태 + +
+

주소

+
+ + + +
+ + + + +
+
+

필수입력 항목*

+

첨부파일

+
+ + + +

첨부파일 가능 용량은 20MB입니다.

업로드 순서는 1.신청서 2.안내문 입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+
+
+ + + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +