diff --git a/src/main/java/kcc/let/my/web/MyPageController_back_251028.java b/src/main/java/kcc/let/my/web/MyPageController_back_251028.java
new file mode 100644
index 00000000..cfd20cd8
--- /dev/null
+++ b/src/main/java/kcc/let/my/web/MyPageController_back_251028.java
@@ -0,0 +1,667 @@
+package kcc.let.my.web;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import kcc.com.cmm.LoginVO;
+import kcc.com.utl.user.service.CheckLoginUtil;
+import kcc.let.cop.bbs.service.BoardMasterVO;
+import kcc.let.cop.bbs.service.BoardVO;
+import kcc.let.uat.uia.service.SsoLoginVO;
+import kcc.let.uss.notify.service.NotifyManageService;
+import kcc.let.uss.notify.service.NotifyManageVO;
+import kcc.let.utl.fcc.service.EgovCryptoUtil;
+import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
+import kcc.ve.cmm.VeConstants;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
+
+/**
+ * 게시물 관리를 위한 컨트롤러 클래스
+ *
+ * @author 공통 서비스 개발팀 이삼섭
+ * @since 2009.03.19
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2009.03.19 이삼섭 최초 생성
+ * 2009.06.29 한성곤 2단계 기능 추가 (댓글관리, 만족도조사)
+ * 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
+ *
+ *
+ */
+//@Controller
+public class MyPageController_back_251028 {
+
+ // 로그인 체크 util
+ @Resource(name = "checkLoginUtil")
+ private CheckLoginUtil checkLoginUtil;
+
+ // 교육과정신청
+ @Resource(name = "vEEduMIXService")
+ private VEEduMIXService vEEduMIXService;
+
+ //암복호화 유틸
+ @Resource(name = "egovCryptoUtil")
+ EgovCryptoUtil egovCryptoUtil;
+
+ //과정차시 관리
+ @Resource(name = "vEPrcsAplctPrdService")
+ private VEPrcsAplctPrdService vEPrcsAplctPrdService;
+
+ //과정 관리
+ @Resource(name = "vEPrcsService")
+ private VEPrcsService vEPrcsService;
+
+ //온라인콘텐츠과정 관리
+ @Resource(name = "fndtnEnhanceTrnService")
+ private FndtnEnhanceTrnService fndtnEnhanceTrnService;
+
+ @Resource(name = "NotifyManageService")
+ private NotifyManageService notifyManageService;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController_back_251028.class);
+
+ @RequestMapping(value = { "/web/my/myPageDashBoard.do" })
+ public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO,
+ ModelMap model, BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception {
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
+
+ if (loginVO == null || ssoLoginVO == null) {
+ return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
+ }
+
+ /*
+ * 청소년 진행목록
+ */
+ {
+ /*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
+ /*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
+ // 청소년
+
+ // 사용자 교육신청 차시 리스트
+ VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
+ vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
+ vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
+ vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
+ vEEduChasiVO.setUserId(loginVO.getUniqId());
+ vEEduChasiVO.setRecordCountPerPage(1000000);
+ vEEduChasiVO.setFirstIndex(0);
+ // List vEEduChasiVOList =
+ // vEEduMIXService.selectChasiList(vEEduChasiVO);
+
+ vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
+ vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
+ vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
+
+ List tngrList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
+
+
+ Map tngrMap = tngrList.stream()
+ .collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
+ //.collect(Collectors.partitioningBy(vo -> "60".equals(vo.getAprvlCd()), Collectors.counting()))
+ .entrySet().stream()
+ .collect(Collectors.toMap(
+ entry -> entry.getKey() ? "tngrEnd" : "tngrIng",
+ entry -> entry.getValue().toString()
+ )
+ );
+
+ System.out.println(tngrMap);
+ System.out.println(tngrMap);
+
+
+ model.addAttribute("tngrMap", tngrMap);
+ model.addAttribute("tngrList", tngrList);*/
+
+ //신청목록
+ VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
+ vEEduAplctVO.setUserId(loginVO.getUniqId());
+ vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
+ vEEduAplctVO.setRecordCountPerPage(10);
+ vEEduAplctVO.setFirstIndex(0);
+ List vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
+ int tngrAplctCnt = 0;
+ if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
+ tngrAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
+ }
+ model.addAttribute("tngrAplctCnt", tngrAplctCnt);
+
+ //완료목록
+ VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
+ vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
+ vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
+ vEEduChasiVO.setUserId(loginVO.getUniqId());
+ vEEduChasiVO.setSearchStartDt(vEEduAplctVO.getSearchStartDt());
+ vEEduChasiVO.setSearchEndDt(vEEduAplctVO.getSearchEndDt());
+ vEEduChasiVO.setRecordCountPerPage(10);
+ vEEduChasiVO.setFirstIndex(0);
+ List vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
+ int tngrEndCnt = 0;
+ if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
+ tngrEndCnt = vEEduChasiVOList.get(0).getTotCnt();
+ }
+ model.addAttribute("tngrEndCnt", tngrEndCnt);
+ model.addAttribute("tngrList", vEEduChasiVOList);
+ }
+
+ /*
+ * 성인 진행목록
+ */
+ {
+ /*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
+ /*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
+ // 청소년
+
+ // 사용자 교육신청 차시 리스트
+ VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
+ vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
+ vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
+ vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
+ vEEduChasiVO.setUserId(loginVO.getUniqId());
+ vEEduChasiVO.setRecordCountPerPage(1000000);
+ vEEduChasiVO.setFirstIndex(0);
+ // List vEEduChasiVOList =
+ // vEEduMIXService.selectChasiList(vEEduChasiVO);
+
+ vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
+ vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
+ vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
+
+ List adultList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
+
+
+ Map adultMap = adultList.stream()
+ .collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
+ .entrySet().stream()
+ .collect(Collectors.toMap(
+ entry -> entry.getKey() ? "adultEnd" : "adultIng",
+ entry -> entry.getValue().toString()
+ )
+ );
+
+ model.addAttribute("adultMap", adultMap);
+ model.addAttribute("adultList", adultList);*/
+ //신청목록
+ VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
+ vEEduAplctVO.setUserId(loginVO.getUniqId());
+ vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
+ vEEduAplctVO.setRecordCountPerPage(10);
+ vEEduAplctVO.setFirstIndex(0);
+ List vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
+ int adultAplctCnt = 0;
+ if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
+ adultAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
+ }
+ model.addAttribute("adultAplctCnt", adultAplctCnt);
+
+ //완료목록
+ VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
+ vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
+ vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
+ vEEduChasiVO.setUserId(loginVO.getUniqId());
+ vEEduChasiVO.setRecordCountPerPage(10);
+ vEEduChasiVO.setFirstIndex(0);
+ List vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
+ int adultEndCnt = 0;
+ if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
+ adultEndCnt = vEEduChasiVOList.get(0).getTotCnt();
+ }
+ model.addAttribute("adultEndCnt", adultEndCnt);
+ model.addAttribute("adultList", vEEduChasiVOList);
+ }
+ /*
+ * 체험교실
+ * */
+ {
+ VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
+ // 저작권
+ vEEduAplctVO.setUserId(loginVO.getUniqId());
+ vEEduAplctVO.setRecordCountPerPage(1000000);
+ vEEduAplctVO.setFirstIndex(0);
+ vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
+
+ List vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
+ vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
+
+ System.out.println("vEEduAplctVOList.size() :: "+vEEduAplctVOList.size());
+// vEEduAplctVOList에서 10, 11, 12, 13 값 제거
+ List filteredList = vEEduAplctVOList.stream()
+ /*
+ .filter(item -> !item.getAprvlCd().equals("10")
+ && !item.getAprvlCd().equals("11")
+ && !item.getAprvlCd().equals("12")
+ && !item.getAprvlCd().equals("13"))
+ */
+ .filter(item -> item.getAprvlCd().equals("80")
+ || item.getAprvlCd().equals("20")
+ )
+ .collect(Collectors.toList());
+// -- 종료 80
+// -- 진행중 20~70
+
+ Map exprnMap = filteredList.stream()
+ .collect(Collectors.partitioningBy(vo -> "80".equals(vo.getAprvlCd()), Collectors.counting()))
+ .entrySet().stream()
+ .collect(Collectors.toMap(
+ entry -> entry.getKey() ? "exprnEnd" : "exprnIng",
+ entry -> entry.getValue().toString()
+ )
+ );
+
+ model.addAttribute("exprnMap", exprnMap);
+ model.addAttribute("exprnList", filteredList);
+ }
+
+ /*
+ * 실무역량강화
+ * */
+ {
+
+
+ VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
+
+ vEPrcsDetailVO.setUserId(loginVO.getUniqId());
+ //기반강화 조회
+ vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+ vEPrcsDetailVO.setRecordCountPerPage(1000000);
+ vEPrcsDetailVO.setFirstIndex(0);
+
+
+ List vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
+ // 요청
+ long cont = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAprvlCd())).count();
+ // 미이수
+ long aplctStateCd10 = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAplctStateCd())).count();
+ // 이수완료
+ long aplctStateCd20 = vEPrcsDetailVOList.stream().filter(t-> "20".equals(t.getAplctStateCd())).count();
+
+ Map fndtnMap = new HashMap<>();
+ fndtnMap.put("fndtnEnd", String.valueOf(aplctStateCd20));
+ fndtnMap.put("fndtnIng", String.valueOf(aplctStateCd10+cont));
+
+ model.addAttribute("fndtnMap", fndtnMap);
+ model.addAttribute("fndtnList", vEPrcsDetailVOList);
+
+
+ //신청중, 수강중, 종료된 수량
+ Map countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
+ model.addAttribute("countMap", countMap);
+
+ }
+
+ //내 문의 목록
+ {
+
+ VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
+ vEPrcsDetailVO.setRecordCountPerPage(3);
+ vEPrcsDetailVO.setFirstIndex(0);
+ vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
+ List qnaList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
+ model.addAttribute("qnaList", qnaList);
+ }
+
+// return "/web/cop/bbs/FaqListAjax";
+ return "web/my/myPageDashBoard";
+ }
+
+ @RequestMapping(value = { "/web/my/myQnaMngList.do" })
+ public String myQnaMngList(
+ HttpServletRequest request
+ , @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ ) throws Exception {
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
+ //2. pageing step2
+ vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
+
+ vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
+
+
+ if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) {
+ String status = "";
+ if("Y".equals(vEPrcsDetailVO.getSearchStatus()))
+ status = "IS NOT NULL";
+ if("N".equals(vEPrcsDetailVO.getSearchStatus()))
+ status = "IS NULL";
+
+ vEPrcsDetailVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
+ }
+
+ List vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ // 사용자 이름 디코딩
+// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", vEPrcsDetailVOList);
+
+ return "web/my/myQnaMngList";
+ }
+
+ @RequestMapping(value = { "/web/my/myNotifyMngList.do" })
+ public String myNotifyMngList(
+ HttpServletRequest request
+ , @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
+ , ModelMap model
+ ) throws Exception {
+
+// try {
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ if (loginVO == null || ssoLoginVO == null) {
+ //이전 url 처리(beforeSiteUrl)_이준호_220228추가
+ return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
+// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
+ }
+
+ notifyManageService.updateM7DaysUseYnN();
+
+
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setNotiPagingStep1(notifyManageVO);
+ //2. pageing step2
+ notifyManageVO = this.setNotiPagingStep2(notifyManageVO, paginationInfo);
+//
+
+
+ notifyManageVO.setToUserId(loginVO.getUniqId());
+
+
+ /*if(StringUtils.isNotEmpty(notifyManageVO.getSearchStatus())) {
+ String status = "";
+ if("Y".equals(notifyManageVO.getSearchStatus()))
+ status = "IS NOT NULL";
+ if("N".equals(notifyManageVO.getSearchStatus()))
+ status = "IS NULL";
+
+ notifyManageVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
+ } */
+
+ List notifyManageVOList = notifyManageService.selectPagingList(notifyManageVO);
+
+ //3.pageing step3
+ paginationInfo = this.setNotiPagingStep3(notifyManageVOList, paginationInfo);
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ // 사용자 이름 디코딩
+// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("list", notifyManageVOList);
+// } catch (Exception e) {
+// e.printStackTrace();
+// // TODO: handle exception
+// }
+// return "web/my/myQnaMngList";
+ return "web/my/myNotifyMngList";
+ }
+
+ @RequestMapping(value = { "/web/my/myNotifyMngDetail.do"})
+ public String myNotifyMngDetail(
+ @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ if (loginVO == null || ssoLoginVO == null) {
+ return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
+ }
+ //로그인 처리====================================
+
+ //과정 조회
+ NotifyManageVO notifyManageInfo = notifyManageService.findById(notifyManageVO);
+
+ model.addAttribute("info", notifyManageInfo);
+
+
+ try {
+ if ("30".equals(notifyManageInfo.getLctrDivCd())){ //체험교실은 다른게 바로가기를 만든다.
+ //eduAplctOrd:eduAplct_00000015581
+ List notifyParamList = new ArrayList();
+ NotifyManageVO tInfo = new NotifyManageVO();
+ tInfo.setSiteNm("eduAplctOrd");
+ tInfo.setParams(notifyManageInfo.getEduAplctOrd());
+
+ notifyParamList.add(tInfo);
+
+ model.addAttribute("notifyParamList", notifyParamList);
+
+ }else{
+ //세부과정 목록 조회
+ String[] a_params = notifyManageInfo.getParams().split(",");
+
+ List notifyParamList = new ArrayList();
+
+ for (int i=0;i 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;
+ }
+
+
+
+ private PaginationInfo setNotiPagingStep1(NotifyManageVO notifyManageVO) {
+ // pageing step1
+ PaginationInfo paginationInfo = new PaginationInfo();
+ paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
+ paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
+ paginationInfo.setPageSize(notifyManageVO.getPageSize());
+
+ return paginationInfo;
+ }
+
+ private NotifyManageVO setNotiPagingStep2(NotifyManageVO notifyManageVO, PaginationInfo paginationInfo) {
+ // pageing step2
+ notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
+ notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
+ notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
+
+ if("".equals(notifyManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+ notifyManageVO.setSearchSortCnd("prcs_ord");
+ notifyManageVO.setSearchSortOrd("desc");
+ }
+
+ return notifyManageVO;
+ }
+
+ private PaginationInfo setNotiPagingStep3(List vEPrcsDetailVOList, PaginationInfo paginationInfo) {
+ // pageing step3
+ int totCnt = 0;
+ if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
+ paginationInfo.setTotalRecordCount(totCnt);
+
+ return paginationInfo;
+ }
+
+
+}
diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdInstrMngController.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdInstrMngController.java
new file mode 100644
index 00000000..67cb8993
--- /dev/null
+++ b/src/main/java/kcc/ve/oprtn/cmdTrgt/web/CmdInstrMngController.java
@@ -0,0 +1,1571 @@
+package kcc.ve.oprtn.cmdTrgt.web;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import kcc.com.cmm.ComDefaultCodeVO;
+import kcc.com.cmm.service.EgovFileMngService;
+import kcc.com.cmm.service.EgovFileMngUtil;
+import kcc.com.cmm.service.impl.CmmUseDAO;
+import kcc.com.cmm.spring.data.util.ExcelUtil;
+import kcc.com.utl.user.service.CheckLoginUtil;
+import kcc.let.utl.fcc.service.EgovCryptoUtil;
+import kcc.ve.cmm.VeInstrFeeMng;
+import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO;
+import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService;
+import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCmpltDetailService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
+import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
+
+/**
+ * 기반강화연수(관리자) 강사관리
+ * 기반강화연수에 관한 controller 클래스를 정의한다.
+ * @author 조용준
+ * @since 2023.07.12
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.12.16 조용준 최초 생성
+ *
+ *
+ */
+
+@Controller
+//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
+public class CmdInstrMngController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CmdInstrMngController.class);
+
+ private final String LCTR_DIV_CD = "70";
+
+ //로그인 체크 util
+ @Resource(name = "checkLoginUtil")
+ private CheckLoginUtil checkLoginUtil;
+
+ //과정 관리
+ @Resource(name = "vEPrcsService")
+ private VEPrcsService vEPrcsService;
+
+ //과정 관리
+ @Resource(name = "vEEduMIXService")
+ private VEEduMIXService vEEduMIXService;
+
+ //온라인콘텐츠과정 관리
+ @Resource(name = "vEPrcsOnlnCntntService")
+ private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
+
+ //과정차시 관리
+ @Resource(name = "vEPrcsAplctPrdService")
+ private VEPrcsAplctPrdService vEPrcsAplctPrdService;
+
+ //과정차시 관리
+ @Resource(name = "vEPrcsMIXService")
+ private VEPrcsMIXService vEPrcsMIXService;
+
+ //과정차시 관리
+ @Resource(name = "vEAPrcsAplctPrdInstrAsgnmService")
+ private VEAPrcsAplctPrdInstrAsgnmService vEAPrcsAplctPrdInstrAsgnmService;
+
+ //교육과정순번
+ @Resource(name="prcsGnrService")
+ private EgovIdGnrService prcsGnrService;
+
+ //과정신청기간순번
+ @Resource(name="prcsAplctPrdGnrService")
+ private EgovIdGnrService prcsAplctPrdGnrService;
+
+ //과정온라인콘텐츠순번
+ @Resource(name="prcsOnlnGnrService")
+ private EgovIdGnrService prcsOnlnGnrService;
+
+ //교육신청
+ @Resource(name = "vEEduAplctService")
+ private VEEduAplctService vEEduAplctService;
+
+ //차시
+ @Resource(name = "vEEduChasiService")
+ private VEEduChasiService vVEEduChasiService;
+
+ //첨부파일 경로, realPath 설정
+ @Resource(name="EgovFileMngUtil")
+ private EgovFileMngUtil fileUtil;
+
+ //암복호화 유틸
+ @Resource(name = "egovCryptoUtil")
+ EgovCryptoUtil egovCryptoUtil;
+
+ //교육과정신청
+ @Resource(name = "vEPrcsCmpltDetailService")
+ private VEPrcsCmpltDetailService vEPrcsCmpltDetailService;
+
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileService;
+
+ //과정
+ @Resource(name="cmmUseDAO")
+ private CmmUseDAO cmmUseDAO;
+
+ //과정신청기간순번
+ @Resource(name="vePrcsAplctPrdEtcGnrService")
+ private EgovIdGnrService vePrcsAplctPrdEtcGnrService;
+
+ // 강사료
+ @Resource(name = "vEInstrFeeService")
+ private VEInstrFeeService vEInstrFeeService;
+
+ //rkdtk 관리
+ @Resource(name = "vEInstrMixService")
+ private VEInstrMixService vEInstrMixService;
+
+ //강의설정 MIX
+ @Resource(name = "vELctrMIXService")
+ private VELctrMIXService vELctrMIXService;
+
+ // 첨부파일 정보
+ @Resource(name="vEInstrDetailActvtHstryService")
+ private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
+
+ /*
+
+ // 교육신청 서비스단
+ @Resource(name = "AdjReqMgrService")
+ private AdjReqMgrService adjReqMgrService;
+
+ // eGov 공통코드
+ @Resource(name = "EgovCmmUseService")
+ private EgovCmmUseService cmmUseService;
+
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileService;
+
+ // global 프로퍼티
+ @Resource(name="globalSettings")
+ protected Properties propertiesService;
+
+ //첨부파일 경로, realPath 설정
+ @Resource(name="EgovFileMngUtil")
+ private EgovFileMngUtil fileUtil;
+
+ // 첨부파일 정보
+ @Resource(name="EgovFileMngService")
+ private EgovFileMngService fileMngService;
+
+ //암복호화 유틸
+ @Resource(name = "egovCryptoUtil")
+ EgovCryptoUtil egovCryptoUtil;
+
+
+ @Resource(name="KccadrMgrUdtService")
+ private KccadrMgrUdtService kccadrMgrUdtService;
+
+ // 교육신청 서비스단
+ @Resource(name = "checkAdrProcessUtil")
+ private CheckAdrProcessUtil checkAdrProcessUtil;
+ */
+ /**
+ * 기소유예 교육확정관리목록
+ */
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnInstrMngList.do")
+ public String cndtnInstrMngList( @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , HttpSession session, ModelMap model ) throws Exception {
+
+
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
+
+ //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
+ //paginationInfo.setRecordCountPerPage(10000);
+
+ //2. pageing step2
+ vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
+
+ //기반강화 조회
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+
+ //교육확정 목록 조회
+ vEPrcsDetailVO.setDdlnCd("20");
+
+ //정렬
+ System.out.println(vEPrcsDetailVO.getSearchSortCnd());
+ System.out.println(vEPrcsDetailVO.getSearchSortOrd());
+ if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+ vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd());
+ }
+
+
+ //강사명 검색시 암호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+ List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO);
+
+ //강사명 검색시 복호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ // 지정된 강사가 있는지 확인
+ vEPrcsDetailVOList.stream().forEach(t->{
+
+ List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
+ if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) {
+ t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size()));
+ }
+
+ });
+
+ //대상 리스트, 페이징 정보 전달
+ vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList);
+ model.addAttribute("list", vEPrcsDetailVOList);
+
+
+
+
+ return "oprtn/cmdTrgt/cndtnInstrMngList";
+ }
+
+ /**
+ * 강사료 확정 처리 목록 화면
+ */
+ //@RequestMapping("eduInstrFeeMngList.do")
+ @RequestMapping("/kccadr/oprtn/cmdTrgt/eduInstrFeeMngList.do")
+ public String eduInstrFeeMngList(
+ //@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ try {
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
+
+ //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
+ //paginationInfo.setRecordCountPerPage(10000);
+
+ //2. pageing step2
+ vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
+
+ //기반강화 조회
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+
+ //교육확정 목록 조회
+ vEPrcsDetailVO.setDdlnCd("20");
+
+ //정렬
+ System.out.println(vEPrcsDetailVO.getSearchSortCnd());
+ System.out.println(vEPrcsDetailVO.getSearchSortOrd());
+ if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+ vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd());
+ }
+
+
+ //강사명 검색시 암호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+ List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO);
+
+ //강사명 검색시 복호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ // 지정된 강사가 있는지 확인
+ vEPrcsDetailVOList.stream().forEach(t->{
+
+ List vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
+ if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) {
+ t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size()));
+ }
+
+ });
+
+
+ // 강사료 계산
+ //vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO);
+ //List vEEduAplctVOList = vEEduMIXService.selectTngrFeePagingList(vEEduAplctVO);
+ VEEduAplctVO vo = new VEEduAplctVO();
+ for(int i=0; i < vEPrcsDetailVOList.size(); i++) {
+ //vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i));
+ //System.out.println(" @@@@@@@@@@@@@ "+vo.getChrgNm());
+ //vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm());
+
+ // 강사료 계산
+ VeInstrFeeMng veInstrFeeMng = new VeInstrFeeMng();
+ VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = veInstrFeeMng.VeInstrFeeMng4Fndth(
+ vEInstrFeeService
+ , vEPrcsDetailVOList.get(i).getPrcsAplctPrdOrd()
+ , vEPrcsDetailVOList.get(i).getUserId()
+ );
+ vEPrcsDetailVOList.get(i).setInstrFeeSum(Integer.toString(vEInstrFeeAcmdtVO.getInstrFeeSum()));
+
+ System.out.println("vEPrcsDetailVOList.get(i).getInstrPhone()");
+ System.out.println(vEPrcsDetailVOList.get(i).getInstrPhone());
+ System.out.println(vEPrcsDetailVOList.get(i).getInstrPhone());
+
+ }
+
+
+ //대상 리스트, 페이징 정보 전달
+ vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList);
+ model.addAttribute("list", vEPrcsDetailVOList);
+
+ System.out.println("vEPrcsDetailVOList.toString()");
+ System.out.println(vEPrcsDetailVOList.toString());
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return "oprtn/cmdTrgt/eduInstrFeeMngList";
+ }
+
+ /**
+ * 강사료 확정 처리 목록 Excel
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @SuppressWarnings("rawtypes")
+ @RequestMapping(value = "/kccadr/oprtn/cmdTrgt/eduInstrFeeExcelDownLoad.do")
+ public ModelAndView eduInstrFeeExcelDownLoad(
+ //@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
+ @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
+ , ModelMap model) throws Exception {
+
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
+ //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
+
+ //로그인 처리====================================
+
+ //1.pageing step1
+ PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
+
+ //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
+ //paginationInfo.setRecordCountPerPage(10000);
+
+ //2. pageing step2
+ vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
+
+ //기반강화 조회
+ vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
+
+ //교육확정 목록 조회
+ vEPrcsDetailVO.setDdlnCd("20");
+
+ //정렬
+ System.out.println(vEPrcsDetailVO.getSearchSortCnd());
+ System.out.println(vEPrcsDetailVO.getSearchSortOrd());
+ if(!"".equals(vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+ vEPrcsDetailVO.setOrderByQuery(vEPrcsDetailVO.getSearchSortCnd() + " " +vEPrcsDetailVO.getSearchSortOrd());
+ }
+
+
+ //강사명 검색시 암호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.encrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+ List vEPrcsDetailVOList = vEPrcsMIXService.selectPagingList4FndthInstr(vEPrcsDetailVO);
+
+ //강사명 검색시 복호화
+ if (!"".equals(vEPrcsDetailVO.getSrchKwd3_1())) {
+ vEPrcsDetailVO.setSrchKwd3_1(egovCryptoUtil.decrypt(vEPrcsDetailVO.getSrchKwd3_1()));
+ }
+
+
+ //3.pageing step3
+ paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
+
+
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ vEPrcsDetailVOList = egovCryptoUtil.decryptvEPrcsDetailList(vEPrcsDetailVOList);
+
+
+ VeInstrFeeMng veInstrFeeMng = new VeInstrFeeMng();
+ vEPrcsDetailVOList.forEach( vo -> {
+ ComDefaultCodeVO codeParam = new ComDefaultCodeVO();
+
+ try {
+
+ // 강사료 계산
+ VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO = veInstrFeeMng.VeInstrFeeMng4Fndth4Excel(vEInstrFeeService, vo.getPrcsAplctPrdOrd(), vo.getUserId());
+
+ vo.setInstrFeeSum(String.format("%,d", vEInstrFeeAcmdtVO.getInstrFeeSum()));
+
+ }
+ catch(Exception ex) {
+ System.out.println(ex.toString());
+
+ }
+ });
+
+ List