diff --git a/src/main/java/kcc/ve/oprtn/instr/adultVisitEdu/instrInfo/OprtnInstrAdultPrflController.java b/src/main/java/kcc/ve/oprtn/instr/adultVisitEdu/instrInfo/OprtnInstrAdultPrflController.java
new file mode 100644
index 00000000..b2d66928
--- /dev/null
+++ b/src/main/java/kcc/ve/oprtn/instr/adultVisitEdu/instrInfo/OprtnInstrAdultPrflController.java
@@ -0,0 +1,2086 @@
+package kcc.ve.oprtn.instr.adultVisitEdu.instrInfo;
+
+import java.text.SimpleDateFormat;
+import java.time.Year;
+import java.util.ArrayList;
+import java.util.Date;
+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.idgnr.EgovIdGnrService;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import kcc.com.cmm.ComDefaultVO;
+import kcc.com.cmm.EgovMessageSource;
+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.spring.data.util.ExcelUtil;
+import kcc.com.cmm.util.StringUtil;
+import kcc.com.utl.user.service.CheckAdrProcessUtil;
+import kcc.com.utl.user.service.CheckFileUtil;
+import kcc.com.utl.user.service.CheckLoginUtil;
+import kcc.kccadr.adjPgrMgr.cclt.service.ConciliatorManageService;
+import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService;
+import kcc.let.cop.bbs.service.Board;
+import kcc.let.uat.uia.service.SsoLoginVO;
+import kcc.let.utl.fcc.service.EgovCryptoUtil;
+import kcc.let.utl.fcc.service.EgovCryptoUtil4VO;
+import kcc.let.utl.fcc.service.ITNotiUtil;
+import kcc.ve.adv.tngr.stngInfo.service.VEAStngService;
+import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO;
+import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoService;
+import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoVO;
+import kcc.ve.cmm.VeConstants;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrExcelVO;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
+import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrAreaService;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrPrfrnService;
+import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrStngService;
+import kcc.ve.instr.tngrVisitEdu.rsdncInfo.service.VERsdncMIXService;
+import kcc.ve.instr.tngrVisitEdu.rsdncInfo.service.VERsdncVO;
+
+/**
+ * InstrAdultPrflController.java
+ * 성인대상 찾아가는 저작권 교육 / 강사정보 / 강사프로필
+ * 강사프로필 controller 클래스를 정의한다.
+ * @author 이지우
+ * @since 2021.12.07
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.12.23 이지우 최초 생성
+ *
+ *
+ */
+
+@Controller
+
+public class OprtnInstrAdultPrflController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(OprtnInstrAdultPrflController.class);
+
+ @Resource(name = "conciliatorManageService")
+ private ConciliatorManageService conciliatorManageService;
+
+ // eGov 공통 메세지
+ @Resource(name = "egovMessageSource")
+ EgovMessageSource egovMessageSource;
+
+ //로그인 체크 util
+ @Resource(name = "checkLoginUtil")
+ private CheckLoginUtil checkLoginUtil;
+
+ //파일 체크 util
+ @Resource(name = "checkFileUtil")
+ private CheckFileUtil checkFileUtil;
+
+ //암복호화 유틸
+ @Resource(name = "egovCryptoUtil")
+ EgovCryptoUtil egovCryptoUtil;
+
+ //파일정보의 관리
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileService;
+
+ //파일 처리 egov
+ @Resource(name="EgovFileMngUtil")
+ private EgovFileMngUtil egovFileMngUtil;
+
+ //파일 처리 egov
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileMngService;
+
+
+ @Resource(name="KccadrMgrUdtService")
+ private KccadrMgrUdtService kccadrMgrUdtService;
+
+ // 교육신청 서비스단
+ @Resource(name = "checkAdrProcessUtil")
+ private CheckAdrProcessUtil checkAdrProcessUtil;
+
+ //강사 정보
+ @Resource(name="vEInstrService")
+ private VEInstrService vEInstrService;
+
+ //강사상세 정보
+ @Resource(name="vEInstrDetailService")
+ private VEInstrDetailService vEInstrDetailService;
+
+ //강사MIX 정보
+ @Resource(name="vEInstrMixService")
+ private VEInstrMixService vEInstrMixService;
+
+ //강의설정
+ @Resource(name = "vELctrStngService")
+ private VELctrStngService vELctrStngService;
+
+ //강의설정 MIX
+ @Resource(name = "vELctrMIXService")
+ private VELctrMIXService vELctrMIXService;
+
+ //강의지역
+ @Resource(name = "vELctrAreaService")
+ private VELctrAreaService vELctrAreaService;
+
+ //강의지역 MIX
+ @Resource(name = "vERsdncMIXService")
+ private VERsdncMIXService vERsdncMIXService;
+
+ //강의선호
+ @Resource(name = "vELctrPrfrnService")
+ private VELctrPrfrnService vELctrPrfrnService;
+
+ //VO 암/복호화
+ @Resource(name="egovCryptoUtil4VO")
+ private EgovCryptoUtil4VO egovCryptoUtil4VO;
+
+ // eGov 공통코드
+ @Resource(name = "EgovCmmUseService")
+ private EgovCmmUseService cmmUseService;
+
+ //강의설정 ID
+ @Resource(name = "lctrStngGnrService")
+ private EgovIdGnrService lctrStngGnrService;
+
+ //강의지역 ID
+ @Resource(name = "lctrAreaGnrService")
+ private EgovIdGnrService lctrAreaGnrService;
+
+ //강의선호 ID
+ @Resource(name = "prfrnTrgtGnrService")
+ private EgovIdGnrService prfrnTrgtGnrService;
+
+ //강사신청 임의 ID
+ @Resource(name = "instrTempGnrService")
+ private EgovIdGnrService instrTempGnrService;
+
+ //강사신청 임의 ID
+ @Resource(name = "scholInfoService")
+ private ScholInfoService scholInfoService;
+
+ //강의설정 관리
+ @Resource(name = "vEAStngService")
+ private VEAStngService vEAStngService;
+
+ //알림
+ @Resource(name = "iTNotiUtil")
+ private ITNotiUtil iTNotiUtil;
+
+ private String p_s_instr_div = "60"; //20-성인, 60-기소유예, 70-시정명령, 80-예방교육
+
+ /**
+ * 1.강사등록신청 목록 조회 -
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngList.do")
+ public String instrPrflList(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , 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(vEInstrDetailVO);
+
+
+ //2. pageing step2
+ vEInstrDetailVO = this.setPagingStep2(vEInstrDetailVO, paginationInfo);
+
+ //3. SelectPagingListQuery set 할 조건 설정
+ String selectCondition = new String();
+ //3.1 제출 완료한 요청만 조회
+// selectCondition += "AND a.sbmt_yn='Y' AND a.aprvl_Cd = '10'";
+ //3.2 강사 테이블 성인강사여부 Y가 아닌것만 조회(등록요청과 수정요청 둘다 코드값 10이라 강사 상세 테이블만으로는 비교 불가)
+ //selectCondition += " AND b.adult_instr_yn !='Y' AND (a.qlfct_end_yn != 'Y' or a.qlfct_end_yn IS NULL) ";
+ selectCondition += " AND a.instr_div='"+p_s_instr_div+"' "; //성인강사로 등록된 대상만 이용
+ selectCondition += " AND a.use_yn='Y' "; //사용처리된 강사만 보여줌
+ //3.3 이름 검색 시
+ if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchKeyword())){
+ //이름 암호화 - comDefaultVO 검색단어 공통 암호화
+ ComDefaultVO comDefaultVO = new ComDefaultVO();
+ comDefaultVO.setSearchKeyword(vEInstrDetailVO.getSearchKeyword());
+ comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
+ vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+ //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
+ selectCondition += "AND a.instr_nm LIKE '%'||'" +vEInstrDetailVO.getSearchKeyword() + "'||'%'";
+ comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
+ vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+ }
+ //3.4 등록일 시작일 검색 시
+ if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchStartDt())){
+ selectCondition += "AND TO_CHAR(a.frst_regist_pnttm, 'YYYYMMDD') >= REPLACE('"+vEInstrDetailVO.getSearchStartDt()+"', '.', '')";
+ }
+ //3.5 등록일 종료일 검색 시
+ if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchEndDt())){
+ selectCondition += "AND TO_CHAR(a.frst_regist_pnttm, 'YYYYMMDD') <= REPLACE('"+vEInstrDetailVO.getSearchEndDt()+"', '.', '')";
+ }
+
+ vEInstrDetailVO.setSelectPagingListQuery(selectCondition);
+
+ List vEInstrDetailVOList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
+
+
+ //4.pageing step3
+ paginationInfo = this.setPagingStep3(vEInstrDetailVOList, paginationInfo);
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ //대상 리스트, 페이징 정보 전달
+ vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
+ model.addAttribute("resultList", vEInstrDetailVOList);
+
+ return "/oprtn/adultVisitEdu/instrAplctMngList";
+ }
+
+
+ /**
+ * 2. 강사등록신청 등록 화면
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctReg.do")
+ public String instrAplctReg(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ /* VEInstrDetailVO vEInstrDetailVODetail = vEInstrDetailService.selectDetail(vEInstrDetailVO);
+
+ model.addAttribute("info", vEInstrDetailVODetail);
+
+ if(StringUtils.isNotBlank(vEInstrDetailVODetail.getPhtAtchFileId())){
+ FileVO fileVO = new FileVO();
+ fileVO.setAtchFileId(vEInstrDetailVODetail.getPhtAtchFileId());
+ List fileList = fileService.selectFileInfs(fileVO);
+ model.addAttribute("fileList", fileList);
+ }*/
+ return "/oprtn/adultVisitEdu/instrAplctReg";
+ }
+
+ /**
+ * 2. 강사등록신청 거주지 팝업
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/popup/instrRsdnePopup.do")
+ public String instrRsdnePopup(
+ @ModelAttribute("vERsdncVO") VERsdncVO vERsdncVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ List rsdncStep1VOList = vERsdncMIXService.selectRsdncStep1List(vERsdncVO);
+ model.addAttribute("rsdncStep1VOList", rsdncStep1VOList);
+
+ System.out.println(vERsdncVO.getOneDepthNm());
+ System.out.println(vERsdncVO.getTwoDepthNm());
+ System.out.println(vERsdncVO.getThreeDepthNm());
+
+ if (!"".equals(vERsdncVO.getOneDepthNm()) && vERsdncVO.getOneDepthNm() != null) {
+ List rsdncStep2VOList = vERsdncMIXService.selectRsdncStep2List(vERsdncVO);
+ model.addAttribute("rsdncStep2VOList", rsdncStep2VOList);
+ }
+
+ if (!"".equals(vERsdncVO.getTwoDepthNm()) && vERsdncVO.getTwoDepthNm() != null) {
+ List rsdncStep3VOList = vERsdncMIXService.selectRsdncStep3List(vERsdncVO);
+ model.addAttribute("rsdncStep3VOList", rsdncStep3VOList);
+ }
+ //로그인 처리====================================
+
+ return "/oprtn/adultVisitEdu/popup/instrRsdnePopup";
+ }
+
+ /**
+ * 성인대상 강사 등록Ajax -
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegAjax.do")
+ public ModelAndView instrPrflRegAjax(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+ , final MultipartHttpServletRequest multiRequest
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+
+ String atchFileId = "";
+ final Map files = multiRequest.getFileMap();
+
+ if (!files.isEmpty()) {
+ //XXX_로 첨부파일 네이밍
+ List result = egovFileMngUtil.parseFileInf(files, "PHT_", 0, "", "", "");
+ atchFileId = fileMngService.insertFileInfs(result);
+ //첨부파일Id(atchFileId)를 해당 VO atchFileId변수에 저장
+ vEInstrDetailVO.setPhtAtchFileId(atchFileId);
+ }
+
+ //user Id는 임시 아이디 사용. 사용자에서 등록 요청 시 실제 uniqId로 업데이트
+ vEInstrDetailVO.setUserId(instrTempGnrService.getNextStringId());
+ vEInstrDetailVO.setFrstRegisterId(loginVO.getUniqId());
+ vEInstrDetailVO.setUseYn("Y");
+ vEInstrDetailVO.setInstrDiv(p_s_instr_div);
+
+ VEInstrDetailVO vEInstrVO = new VEInstrDetailVO();
+ vEInstrVO = vEInstrService.selectDetail(vEInstrDetailVO);
+ //최초 신청시에만 강사 테이블에 insert, 수정 요청시는 강사 디테일만 insert
+ if(vEInstrVO == null) {
+// vEInstrService.insert(vEInstrDetailVO);
+ }
+ VEInstrDetailVO vEInstrDetailYn = new VEInstrDetailVO();
+ vEInstrDetailYn = vEInstrDetailService.selectDetail(vEInstrDetailVO);
+ if(vEInstrDetailYn == null) {
+// vEInstrDetailVO.setUseYn("Y"); //강사 테이블에 기존 데이터가 있고, 수정 요청을 할 경우 기존의 데이터 useY이고 수정요청한 데이터는 useN
+ }
+ vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
+ vEInstrDetailService.insert(vEInstrDetailVO);
+ vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setAdultInstrYn("N");
+ vEInstrService.insert(vEInstrDetailVO);
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+ }
+
+ /**
+ * 2. 강사등록신청 등록 화면 (Excel)
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcel.do")
+ public String instrAplctRegExcel(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ /* VEInstrDetailVO vEInstrDetailVODetail = vEInstrDetailService.selectDetail(vEInstrDetailVO);
+
+ model.addAttribute("info", vEInstrDetailVODetail);
+
+ if(StringUtils.isNotBlank(vEInstrDetailVODetail.getPhtAtchFileId())){
+ FileVO fileVO = new FileVO();
+ fileVO.setAtchFileId(vEInstrDetailVODetail.getPhtAtchFileId());
+ List fileList = fileService.selectFileInfs(fileVO);
+ model.addAttribute("fileList", fileList);
+ }*/
+ return "/oprtn/adultVisitEdu/instrAplctRegExcel";
+ }
+
+ /**
+ * 강사EXCEL 등록한다.
+ *
+ * @param boardVO
+ * @param board
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value=
+ {
+ "/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegExcelAjax.do"
+ }
+ )
+ public ModelAndView insertAddrAgencyAjax(
+ HttpServletRequest request
+ , @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+ //, @ModelAttribute("insertAgency") VacsVactVO vacsVactVO
+ , final MultipartHttpServletRequest multiRequest
+ , @ModelAttribute("board") Board board
+ //, ModelMap model
+ , ModelAndView modelAndView
+ , RedirectAttributes redirectAttributes
+ ) throws Exception {
+
+ //json 알림
+ modelAndView.setViewName("jsonView");
+
+
+ //사용자 로그인 여부 체크 for json
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ //String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView);
+ //if ("N".equals(isLogin)) return modelAndView;
+
+
+ //필요 쿼리 생성 및 처리 - 계좌번호만 작성된 파일 처리
+ String s_split = "\t";
+ int i_data_column_size = 27;
+ int i_data_start_row = 2;
+
+
+ //1.파일 정상 처리 여부와 첨부 파일 정보
+ String atchFileId = this.readFile(multiRequest, modelAndView, "xls|xlsx|xlsm", 10, 1); //size and ea
+
+ if ("ERROR".equals(atchFileId)) return modelAndView;
+
+
+ //2.파일 읽기
+ //text 파일 읽어서 list에 넣기
+ List sb = new ArrayList<>();
+ sb = checkFileUtil.extractFromTxtFile(multiRequest, sb);
+
+ if (sb.size()==0) {
+ //text 파일읽기가 안된경우 excel 읽기를 실행
+ sb = checkFileUtil.extractFromExcelFile(multiRequest, sb, 0, i_data_column_size, i_data_start_row);
+
+ }
+
+ System.out.println("sb.toString()===================================");
+ System.out.println(sb.toString());
+ System.out.println(sb.toString());
+
+
+
+ //3.쿼리 만들기
+ //String s_in_query = "'0'";
+ //String s_select_query = "SELECT '0' acct_no";
+
+ //3.데이터 저장하기
+ try {
+ String[] s_stndrd_tmp = sb.get(0).split(s_split);
+
+ for (int i=1;i=s_stndrd_tmp.length) {
+ //성인 강사 등록 처리
+
+
+ //user Id는 임시 아이디 사용. 사용자에서 등록 요청 시 실제 uniqId로 업데이트
+ //기본 데이터 가져오기
+ vEInstrDetailVO.setUserId(instrTempGnrService.getNextStringId());
+ vEInstrDetailVO.setFrstRegisterId(loginVO.getUniqId());
+ vEInstrDetailVO.setUseYn("Y");
+ vEInstrDetailVO.setInstrDiv(p_s_instr_div);
+
+ vEInstrDetailVO.setInstrNm(s_tmp[2]);
+ vEInstrDetailVO.setPhone(s_tmp[17]);
+ vEInstrDetailVO.setEmail(s_tmp[18]);
+ //vEInstrDetailVO.setPost(s_tmp[14]);
+ vEInstrDetailVO.setAddr(s_tmp[20]);
+ vEInstrDetailVO.setRmrks(s_tmp[26]);
+
+ //vEInstrDetailVO.setAddrDetail(s_tmp[6]);
+ vEInstrDetailVO.setRsdne(s_tmp[6]);
+ vEInstrDetailVO.setdBirth(s_tmp[19].replaceAll("[.]", ""));
+ //vEInstrDetailVO.setFinalSchol(s_tmp[9]);
+ //vEInstrDetailVO.setMjr(s_tmp[10]);
+
+ //vEInstrDetailVO.setApptYr(s_tmp[1]);
+ //vEInstrDetailVO.setApptDiv(s_tmp[2].replaceAll("신규", "10").replaceAll("재위촉", "30").replaceAll("위촉", "20"));
+ //vEInstrDetailVO.setBlng(s_tmp[6]);
+
+ //vEInstrDetailVO.setPstn(s_tmp[7]);
+ //vEInstrDetailVO.setPrfsnFld(s_tmp[8]);
+ //vEInstrDetailVO.setDivCd(s_tmp[4].replaceAll("입문", "10").replaceAll("전문", "20").replaceAll("내부", "30"));
+
+ vEInstrDetailVO.setRepQf(s_tmp[3]);
+ vEInstrDetailVO.setSubQf(s_tmp[4]);
+ vEInstrDetailVO.setWorkArea(s_tmp[5]);
+ vEInstrDetailVO.setLctAvlArea1(s_tmp[7].equals("○")?"Y":"N");
+ vEInstrDetailVO.setLctAvlArea2(s_tmp[8].equals("○")?"Y":"N");
+ vEInstrDetailVO.setLctAvlArea3(s_tmp[9].equals("○")?"Y":"N");
+ vEInstrDetailVO.setLctAvlArea4(s_tmp[10].equals("○")?"Y":"N");
+ vEInstrDetailVO.setLctAvlArea5(s_tmp[11].equals("○")?"Y":"N");
+ vEInstrDetailVO.setLctAvlArea6(s_tmp[12].equals("○")?"Y":"N");
+
+ vEInstrDetailVO.setAvlLctCntnt1(s_tmp[13].equals("○")?"Y":"N");
+ vEInstrDetailVO.setAvlLctCntnt2(s_tmp[14].equals("○")?"Y":"N");
+ vEInstrDetailVO.setAvlLctCntnt3(s_tmp[15].equals("○")?"Y":"N");
+
+ vEInstrDetailVO.setCarer(s_tmp[16]);
+
+ vEInstrDetailVO.setGender(s_tmp[21].equals("남")?"M":"F");
+
+ vEInstrDetailVO.setRcrtCtgr(s_tmp[22]);
+ vEInstrDetailVO.setApntDt(s_tmp[23]);
+ vEInstrDetailVO.setActvDt(s_tmp[24]);
+ vEInstrDetailVO.setOvrlSrvy(s_tmp[25]);
+
+
+ System.out.println(vEInstrDetailVO.toString());
+
+ //암호화
+ vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
+
+ System.out.println(vEInstrDetailVO.toString());
+ System.out.println(vEInstrDetailVO.toString());
+ System.out.println(vEInstrDetailVO.toString());
+
+
+ //ve_instr 데이터 존재여부 확인 - 이름, 핸드폰으로 해야 함.
+ VEInstrDetailVO vEInstrVO = new VEInstrDetailVO();
+ vEInstrVO = vEInstrMixService.selectDetailForCheck(vEInstrDetailVO);
+ //vEInstrVO = vEInstrService.selectDetail(vEInstrDetailVO);
+
+ //최초 신청시에만 강사 테이블에 insert, 수정 요청시는 강사 디테일만 insert
+ if(vEInstrVO == null) {
+// vEInstrService.insert(vEInstrDetailVO);
+ //ve_instr 데이터 넣기
+ vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setAdultInstrYn("N");
+ vEInstrService.insert(vEInstrDetailVO);
+
+ //insert - use use_yn
+ vEInstrDetailService.insert(vEInstrDetailVO);
+
+ }else {
+ if ("Y".equals(vEInstrVO.getAdultInstrYn())) {
+ //ve_instr_detail
+ //기존에 값이 있으면 상세정보만 업데이트
+ //vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setUserId(vEInstrVO.getUserId());
+ vEInstrDetailVO.setUseYn("Y");
+ vEInstrVO = vEInstrMixService.selectDetailGetY(vEInstrDetailVO);
+
+ if (vEInstrVO == null) { //insert - use use_yn
+ vEInstrDetailService.insert(vEInstrDetailVO);
+
+ }else { //update
+ vEInstrDetailVO.setInstrDetailOrd(vEInstrVO.getInstrDetailOrd());
+ //vEInstrService.update(vEInstrDetailVO);
+ vEInstrDetailService.insertDup(vEInstrDetailVO); //no use use_yn
+
+ }
+ }else {
+ //step2-2-2.ve_instr n면
+ //max로 ve_instr_detail 찾아서 있으면 up
+ //없으면 n로 생성
+
+ //ve_instr_detail
+ //기존에 값이 있으면 상세정보만 업데이트
+ //vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setUserId(vEInstrVO.getUserId());
+ vEInstrVO = vEInstrMixService.selectDetailGetMaxOrd(vEInstrDetailVO);
+
+ if (vEInstrVO == null) { //insert - use use_yn
+ vEInstrDetailService.insert(vEInstrDetailVO);
+
+ }else { //update
+ vEInstrDetailVO.setInstrDetailOrd(vEInstrVO.getInstrDetailOrd());
+ //vEInstrService.update(vEInstrDetailVO);
+ vEInstrDetailService.insertDup(vEInstrDetailVO); //no use use_yn
+
+ }
+ }
+ /*
+ //기존에 값이 있으면 상세정보만 업데이트
+ //vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setUserId(vEInstrVO.getUserId());
+ vEInstrVO = vEInstrMixService.selectDetailGetMaxOrd(vEInstrDetailVO);
+
+ if (vEInstrVO == null) {
+ vEInstrDetailService.insert(vEInstrDetailVO);
+ }else {
+ vEInstrDetailVO.setInstrDetailOrd(vEInstrVO.getInstrDetailOrd());
+ //vEInstrService.update(vEInstrDetailVO);
+ vEInstrDetailService.insertDup(vEInstrDetailVO);
+ }
+ */
+
+ }
+
+
+ //ve_instr_detail 데이터 넣기
+ //vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
+ //dup 추가
+
+
+
+ }
+ }
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+ }
+
+ /**
+ * 고립학교EXCEL 등록한다.
+ *
+ * @param boardVO
+ * @param board
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value=
+ {
+ "/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctRegScholExcelAjax.do"
+ }
+ )
+ public ModelAndView instrAplctRegScholExcelAjax(
+ HttpServletRequest request
+ , @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+ //, @ModelAttribute("insertAgency") VacsVactVO vacsVactVO
+ , final MultipartHttpServletRequest multiRequest
+ , @ModelAttribute("board") Board board
+ //, ModelMap model
+ , ModelAndView modelAndView
+ , RedirectAttributes redirectAttributes
+ ) throws Exception {
+
+ //json 알림
+ modelAndView.setViewName("jsonView");
+
+
+ //사용자 로그인 여부 체크 for json
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ //String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView);
+ //if ("N".equals(isLogin)) return modelAndView;
+
+
+ //필요 쿼리 생성 및 처리 - 계좌번호만 작성된 파일 처리
+ String s_split = "\t";
+ int i_data_column_size = 4;
+ int i_data_start_row = 0;
+
+
+ //1.파일 정상 처리 여부와 첨부 파일 정보
+ String atchFileId = this.readFile(multiRequest, modelAndView, "xls|xlsx|xlsm", 10, 1); //size and ea
+
+ if ("ERROR".equals(atchFileId)) return modelAndView;
+
+
+ //2.파일 읽기
+ //text 파일 읽어서 list에 넣기
+ List sb = new ArrayList<>();
+ sb = checkFileUtil.extractFromTxtFile(multiRequest, sb);
+
+ if (sb.size()==0) {
+ //text 파일읽기가 안된경우 excel 읽기를 실행
+ sb = checkFileUtil.extractFromExcelFile(multiRequest, sb, 0, i_data_column_size, i_data_start_row);
+
+ }
+
+
+
+ //3.쿼리 만들기
+ //String s_in_query = "'0'";
+ //String s_select_query = "SELECT '0' acct_no";
+
+ //3.데이터 저장하기
+ try {
+ String[] s_stndrd_tmp = sb.get(0).split(s_split);
+
+ for (int i=1;i=s_stndrd_tmp.length) {
+ //성인 강사 등록 처리
+ if (!"".equals(s_tmp[3])) {
+ //step1.검색을 해서 학교를 찾고
+ ScholInfoVO scholInfoVO = new ScholInfoVO();
+ String p_selectPagingListQuery = "";
+ p_selectPagingListQuery = p_selectPagingListQuery + " AND a.loc_nm ='"+s_tmp[0]+"' ";
+ p_selectPagingListQuery = p_selectPagingListQuery + " AND a.new_addr like'%"+s_tmp[1]+"%' ";
+ p_selectPagingListQuery = p_selectPagingListQuery + " AND a.schol_nm ='"+s_tmp[3]+"' ";
+
+ scholInfoVO.setSelectPagingListQuery(p_selectPagingListQuery);
+ scholInfoVO = scholInfoService.selectDetailWithQuery(scholInfoVO);
+
+
+ //step2.있으면 데이터를 넣는다.
+ if (scholInfoVO!=null) {
+ scholInfoService.insertIsltn(scholInfoVO);
+ }
+
+
+ }
+ //vEInstrDetailVO.setInstrNm(s_tmp[3]);
+
+ /*
+ //user Id는 임시 아이디 사용. 사용자에서 등록 요청 시 실제 uniqId로 업데이트
+ //기본 데이터 가져오기
+ vEInstrDetailVO.setUserId(instrTempGnrService.getNextStringId());
+ vEInstrDetailVO.setFrstRegisterId(loginVO.getUniqId());
+ vEInstrDetailVO.setUseYn("N");
+ vEInstrDetailVO.setInstrDiv("20");
+
+ vEInstrDetailVO.setInstrNm(s_tmp[3]);
+ vEInstrDetailVO.setPhone(s_tmp[9]);
+ vEInstrDetailVO.setEmail(s_tmp[10]);
+ vEInstrDetailVO.setPost(s_tmp[14]);
+ vEInstrDetailVO.setAddr(s_tmp[13]);
+ vEInstrDetailVO.setRmrks(s_tmp[15]);
+
+ //vEInstrDetailVO.setAddrDetail(s_tmp[6]);
+ vEInstrDetailVO.setRsdne(s_tmp[12]);
+ vEInstrDetailVO.setdBirth(s_tmp[5].replaceAll("[.]", ""));
+ //vEInstrDetailVO.setFinalSchol(s_tmp[9]);
+ //vEInstrDetailVO.setMjr(s_tmp[10]);
+
+ vEInstrDetailVO.setApptYr(s_tmp[1]);
+ vEInstrDetailVO.setApptDiv(s_tmp[2].replaceAll("신규", "10").replaceAll("재위촉", "30").replaceAll("위촉", "20"));
+ vEInstrDetailVO.setBlng(s_tmp[6]);
+
+ vEInstrDetailVO.setPstn(s_tmp[7]);
+ vEInstrDetailVO.setPrfsnFld(s_tmp[8]);
+ vEInstrDetailVO.setDivCd(s_tmp[4].replaceAll("입문", "10").replaceAll("전문", "20").replaceAll("내부", "30"));
+
+
+ //암호화
+ vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
+
+
+ //ve_instr 데이터 존재여부 확인 - 이름, 핸드폰으로 해야 함.
+ VEInstrDetailVO vEInstrVO = new VEInstrDetailVO();
+ vEInstrVO = vEInstrMixService.selectDetailForCheck(vEInstrDetailVO);
+ //vEInstrVO = vEInstrService.selectDetail(vEInstrDetailVO);
+
+ //최초 신청시에만 강사 테이블에 insert, 수정 요청시는 강사 디테일만 insert
+ if(vEInstrVO == null) {
+// vEInstrService.insert(vEInstrDetailVO);
+ //ve_instr 데이터 넣기
+ vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setAdultInstrYn("N");
+ vEInstrService.insert(vEInstrDetailVO);
+
+ vEInstrDetailService.insert(vEInstrDetailVO);
+
+ }else {
+ //기존에 값이 있으면 상세정보만 업데이트
+ //vEInstrDetailVO.setTngrInstrYn("N");
+ vEInstrDetailVO.setUserId(vEInstrVO.getUserId());
+ vEInstrVO = vEInstrMixService.selectDetailGetMaxOrd(vEInstrDetailVO);
+
+ if (vEInstrVO == null) {
+ vEInstrDetailService.insert(vEInstrDetailVO);
+ }else {
+ vEInstrDetailVO.setInstrDetailOrd(vEInstrVO.getInstrDetailOrd());
+ //vEInstrService.update(vEInstrDetailVO);
+ vEInstrDetailService.insertDup(vEInstrDetailVO);
+ }
+
+ }
+ */
+
+ //ve_instr_detail 데이터 넣기
+ //vEInstrDetailVO = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVO);
+ //dup 추가
+
+
+
+ }
+ }
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ modelAndView.addObject("result", "success");
+
+ return modelAndView;
+ }
+
+ /**
+ * 2. 강사등록신청 상세 조회
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetail.do")
+ public String instrPrflDetial(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ VEInstrDetailVO vEInstrDetailVODetail = vEInstrDetailService.selectDetail(vEInstrDetailVO);
+ vEInstrDetailVODetail = egovCryptoUtil.decryptVEInstrDetailVO(vEInstrDetailVODetail);
+ model.addAttribute("info", vEInstrDetailVODetail);
+
+ if(StringUtils.isNotBlank(vEInstrDetailVODetail.getPhtAtchFileId())){
+ FileVO fileVO = new FileVO();
+ fileVO.setAtchFileId(vEInstrDetailVODetail.getPhtAtchFileId());
+ List fileList = fileService.selectFileInfs(fileVO);
+ model.addAttribute("fileList", fileList);
+ }
+ return "/oprtn/adultVisitEdu/instrAplctMngDetail";
+ }
+
+ /**
+ * 2. 강사 신청 삭제
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMngDetailDeleteAjax.do")
+ public ModelAndView instrAplctMngDetailDeleteAjax(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+ //step1.detail 에서 삭제
+ //step2.detail 에서 확인
+ //step3.2번 결과에 따라서 instr 에서 삭제
+ System.out.println(vEInstrDetailVO.getInstrDiv());
+ System.out.println(vEInstrDetailVO.getUserId());
+ System.out.println(vEInstrDetailVO.getInstrDetailOrd());
+
+ //강사 관리 프로세스 변경에 따라서 DB 삭제에서 use_yn='N' 처리로 변경 2025-08-28
+ vEInstrDetailVO.setUseYn("N");
+ vEInstrDetailService.deleteYn(vEInstrDetailVO);
+
+ /*
+ vEInstrDetailService.delete(vEInstrDetailVO);
+
+
+ vEInstrDetailVO.setInstrDiv("20");
+ VEInstrDetailVO v_vEInstrDetailVO = vEInstrDetailService.selectDetail(vEInstrDetailVO);
+
+
+ if (v_vEInstrDetailVO==null) {
+ vEInstrService.delete(vEInstrDetailVO);
+ }
+ */
+
+
+ modelAndView.addObject("result", "success");
+ return modelAndView;
+ }
+
+ /**
+ * 3. 강사등록신청 위촉확인 처리
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctApptAjax.do")
+ public ModelAndView instrAplctApptAjax(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ SimpleDateFormat format1 = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss");
+ Date time = new Date();
+ String now = format1.format(time);
+ SimpleDateFormat format2 = new SimpleDateFormat ( "yyyy-MM-dd");
+ Date time2 = new Date();
+ String now2 = format2.format(time2);
+ vEInstrDetailVO.setAprvlPnttm(now);
+ vEInstrDetailVO.setApptDt(now2);
+ vEInstrDetailVO.setLastUpdusrId(loginVO.getUniqId());
+ vEInstrDetailVO.setAprvlId(loginVO.getUniqId());
+ vEInstrDetailVO.setAprvlCd("20");
+ vEInstrDetailVO.setUseYn("Y");
+ vEInstrDetailService.update(vEInstrDetailVO);
+ vEInstrDetailVO.setAdultInstrYn("Y");
+ vEInstrService.update(vEInstrDetailVO);
+
+ //권한 ROLE_USER_MANAGER로 수정
+ if("Y".equals(vEInstrDetailVO.getAdultInstrYn())){
+ LoginVO loginVOInsert = new LoginVO();
+ loginVOInsert.setUniqId(vEInstrDetailVO.getUserId());
+ loginVOInsert.setAuthority("ROLE_USER_MANAGER");
+ conciliatorManageService.updateConciliatorManageAuthority(loginVOInsert);
+ }
+
+
+ modelAndView.addObject("result", "success");
+ return modelAndView;
+ }
+
+ /**
+ * 3. 강사등록신청 승인, 반려 처리
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctMdfyAjax.do")
+ public ModelAndView instrPrflMdfyAjax(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , ModelMap model
+ , RedirectAttributes redirectAttributes
+ , HttpSession session
+ , HttpServletRequest request
+ ) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("jsonView");
+
+ //로그인 처리====================================
+ //로그인 정보 가져오기
+ LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
+ SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
+
+ //로그인 처리====================================
+
+ SimpleDateFormat format1 = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss");
+ Date time = new Date();
+ String now = format1.format(time);
+ vEInstrDetailVO.setAprvlPnttm(now);
+ vEInstrDetailVO.setLastUpdusrId(loginVO.getUniqId());
+ vEInstrDetailVO.setAprvlId(loginVO.getUniqId());
+ //등록 or 수정 요청의 승인 시 useYn Y 업데이트 및 나머지 디테일들 useYn N 업데이트
+ if("20".equals(vEInstrDetailVO.getAprvlCd())){
+ vEInstrDetailVO.setUseYn("Y");
+ //디테일 다른 데이터들 useYn N 업데이트
+ vEInstrMixService.updateUseYnN(vEInstrDetailVO);
+
+ //강사 정보 수정
+ try {
+ iTNotiUtil.insertNotifyNew(
+ "20",
+ loginVO.getUniqId(),
+ VeConstants.NOTI_STATUS_82,
+ vEInstrDetailVO.getUserId(),
+ "",
+ "0",
+ "1"
+ );
+ }catch(Exception ex) {
+ ex.printStackTrace();
+ }
+ }else {
+ vEInstrDetailService.update(vEInstrDetailVO);
+ }
+
+
+
+ modelAndView.addObject("result", "success");
+ return modelAndView;
+ }
+
+ /**
+ * 4. 강사등록신청 반려 처리 팝업
+ */
+ @RequestMapping(value = "/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrAplctCmpnnPopup.do")
+ public String addRpplPop(@ModelAttribute("info") VEInstrDetailVO vEInstrDetailVO, ModelMap model) throws Exception {
+
+ return "/oprtn/adultVisitEdu/instrAplctCmpnnPopup";
+ }
+
+
+ /**
+ * 5.강사 관리 목록(성인)
+ */
+ @RequestMapping("/kccve/oprtn/instr/adultVisitEdu/instrInfo/instrMngList.do")
+ public String instrMngList(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+
+ , 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(vEInstrDetailVO);
+
+
+ //2. pageing step2
+ vEInstrDetailVO = this.setPagingStep2(vEInstrDetailVO, paginationInfo);
+
+ //3. SelectPagingListQuery set 할 조건 설정
+ String selectCondition = new String();
+ //3.0 데이터가 있으면 모두 조회
+ selectCondition += " AND a0.user_id=b0.user_id ";
+ selectCondition += " AND a0.use_yn='Y' ";
+ //3.1 제출 완료 후 사용중인 데이터 조회
+ //selectCondition += "AND a.sbmt_yn='Y' AND a.use_yn = 'Y'";
+ //selectCondition += "AND a0.sbmt_yn='Y' AND a0.use_yn = 'Y'";
+ //3.2 강사 테이블 성인강사여부 Y인것만 조회
+ //selectCondition += "AND (b.adult_instr_yn ='Y' OR a.qlfct_end_yn = 'Y') ";
+ //selectCondition += "AND (b0.adult_instr_yn ='Y' OR a0.qlfct_end_yn = 'Y') ";
+ //3.3 이름 검색 시
+ if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchKeyword())){
+ //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
+ //이름 암호화 - comDefaultVO 검색단어 공통 암호화
+ ComDefaultVO comDefaultVO = new ComDefaultVO();
+ comDefaultVO.setSearchKeyword(vEInstrDetailVO.getSearchKeyword());
+ comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
+ vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+ //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
+ selectCondition += "AND a0.instr_nm LIKE '%'||'" +vEInstrDetailVO.getSearchKeyword() + "'||'%'";
+ comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
+ vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+ }
+ //3.4 요청일 시작일 검색 시
+ //if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchStartDt())){
+ // selectCondition += "AND TO_CHAR(a.frst_regist_pnttm, 'YYYYMMDD') >= REPLACE('"+vEInstrDetailVO.getSearchStartDt()+"', '.', '')";
+ //}
+ //3.5 요청일 종료일 검색 시
+ //if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchEndDt())){
+ // selectCondition += "AND TO_CHAR(a.frst_regist_pnttm, 'YYYYMMDD') <= REPLACE('"+vEInstrDetailVO.getSearchEndDt()+"', '.', '')";
+ //}
+ vEInstrDetailVO.setInstrDiv(p_s_instr_div);
+ vEInstrDetailVO.setSelectPagingListQuery(selectCondition);
+
+ List vEInstrDetailVOList = vEInstrMixService.selectPagingDetailList(vEInstrDetailVO);
+
+ vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
+
+ //4.pageing step3
+ paginationInfo = this.setPagingStep3(vEInstrDetailVOList, paginationInfo);
+ model.addAttribute("paginationInfo", paginationInfo);
+
+ //대상 리스트, 페이징 정보 전달
+ model.addAttribute("resultList", vEInstrDetailVOList);
+
+ VELctrDetailVO lctrDetailVO = new VELctrDetailVO();
+ lctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv());
+ lctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
+
+ //강의설정 요청 리스트만 불러오기
+ lctrDetailVO.setAprvlCd("10"); // 강의 설정 요청 리스트만 불러오기
+ List lctrStngSbmtInfo = vELctrMIXService.selectLctrStngSbmtList(lctrDetailVO);
+ model.addAttribute("lctrStngSbmtInfo", lctrStngSbmtInfo);
+
+ return "/oprtn/adultVisitEdu/instrMngList";
+ }
+
+ /**
+ * 성인찾아가는 저작권 교육 목록 Excel
+ * @param model
+ * @return
+ * @throws Exception
+ */
+ @SuppressWarnings("rawtypes")
+ @RequestMapping(value = "/kccve/oprtn/instr/adultVisitEdu/instrInfo/eduAplctExcelDownLoad.do")
+ public ModelAndView eduAplctExcelDownLoad(
+ @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
+ , ModelMap model) throws Exception {
+
+ System.out.println("userIdList :: "+ vEInstrDetailVO.getUserIdList().toString());
+// vEInstrDetailVO.setRecordCountPerPage(10000000);
+//
+// //1.pageing step1
+// PaginationInfo paginationInfo = this.setPagingStep1(vEInstrDetailVO);
+//
+//
+// //2. pageing step2
+// vEInstrDetailVO = this.setPagingStep2(vEInstrDetailVO, paginationInfo);
+//
+// //3. SelectPagingListQuery set 할 조건 설정
+// String selectCondition = new String();
+// //3.1 제출 완료 후 사용중인 데이터 조회
+// //selectCondition += "AND a.sbmt_yn='Y' AND a.use_yn = 'Y'";
+// selectCondition += "AND a0.sbmt_yn='Y' AND a0.use_yn = 'Y'";
+// //3.2 강사 테이블 성인강사여부 Y인것만 조회
+// //selectCondition += "AND (b.adult_instr_yn ='Y' OR a.qlfct_end_yn = 'Y') ";
+// selectCondition += "AND (b0.adult_instr_yn ='Y' OR a0.qlfct_end_yn = 'Y') ";
+// //3.3 이름 검색 시
+// if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchKeyword())){
+// //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
+// //이름 암호화 - comDefaultVO 검색단어 공통 암호화
+// ComDefaultVO comDefaultVO = new ComDefaultVO();
+// comDefaultVO.setSearchKeyword(vEInstrDetailVO.getSearchKeyword());
+// comDefaultVO = egovCryptoUtil.encryptComDefaultVO(comDefaultVO);
+// vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+// //selectCondition += "AND a.instr_nm LIKE CONCAT ('%', '" +vEInstrDetailVO.getSearchKeyword() + "', '%')";
+// selectCondition += "AND a0.instr_nm LIKE '%'||'" +vEInstrDetailVO.getSearchKeyword() + "'||'%'";
+// comDefaultVO = egovCryptoUtil.decryptComDefaultVO(comDefaultVO);
+// vEInstrDetailVO.setSearchKeyword(comDefaultVO.getSearchKeyword());
+// }
+// //3.4 요청일 시작일 검색 시
+// if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchStartDt())){
+// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') >= REPLACE('"+vEInstrDetailVO.getSearchStartDt()+"', '.', '')";
+// }
+// //3.5 요청일 종료일 검색 시
+// if(StringUtil.isNotEmpty(vEInstrDetailVO.getSearchEndDt())){
+// selectCondition += "AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <= REPLACE('"+vEInstrDetailVO.getSearchEndDt()+"', '.', '')";
+// }
+// vEInstrDetailVO.setSelectPagingListQuery(selectCondition);
+
+
+
+ vEInstrDetailVO.setInstrDiv(p_s_instr_div);
+
+ List vEInstrDetailVOList = vEInstrMixService.selectInstrExcelList(vEInstrDetailVO);
+// List vEInstrDetailsVOList = vEInstrMixService.selectPagingDetailList(vEInstrDetailVO);
+
+ vEInstrDetailVOList = egovCryptoUtil.decryptVEInstrDetailVOList(vEInstrDetailVOList);
+
+
+ List vEInstrExcelVOList = new ArrayList<>();
+
+ for(VEInstrDetailVO aa : vEInstrDetailVOList) {
+
+ VEInstrExcelVO vEInstrExcelVO = new VEInstrExcelVO();
+ vEInstrExcelVO.setInstrNm( aa.getInstrNm());
+ vEInstrExcelVO.setApptYr( aa.getApptYr());
+ vEInstrExcelVO.setDBirth( aa.getdBirth());
+ vEInstrExcelVO.setBlng( aa.getBlng());
+ vEInstrExcelVO.setPstn( aa.getPstn());
+ vEInstrExcelVO.setPhone( aa.getPhone());
+ vEInstrExcelVO.setEmail( aa.getEmail());
+ vEInstrExcelVO.setPrfsnFld( aa.getPrfsnFld());
+ vEInstrExcelVO.setAddr( aa.getAddr());
+ vEInstrExcelVO.setYNowEduCnt( aa.getyNowEduCnt());
+ vEInstrExcelVO.setYNowMoneEduCnt( aa.getyNowMoneEduCnt());
+ vEInstrExcelVO.setYNowMtwoEduCnt( aa.getyNowMtwoEduCnt());
+ vEInstrExcelVO.setYNowMthreeEduCnt( aa.getyNowMthreeEduCnt());
+ vEInstrExcelVO.setYNowMfourEduCnt( aa.getyNowMfourEduCnt());
+ vEInstrExcelVO.setYNowStsfc( aa.getyNowStsfc());
+ vEInstrExcelVO.setYNowMoneStsfc( aa.getyNowMoneStsfc());
+ vEInstrExcelVO.setYNowMtwoStsfc( aa.getyNowMtwoStsfc());
+ vEInstrExcelVO.setYNowMthreeStsfc( aa.getyNowMthreeStsfc());
+ vEInstrExcelVO.setYNowMfourStsfc( aa.getyNowMfourStsfc());
+ vEInstrExcelVO.setMemo( aa.getMemo());
+
+ vEInstrExcelVOList.add(vEInstrExcelVO);
+ }
+
+
+ List