From f863745f3edee5e9cf724bddde38d16ae4bfd376 Mon Sep 17 00:00:00 2001 From: myname Date: Fri, 24 Nov 2023 17:59:08 +0900 Subject: [PATCH] =?UTF-8?q?2023-11-24=2017:59=20=EC=88=99=EB=B0=95=20?= =?UTF-8?q?=EC=8B=A0=EC=B2=AD=20=EC=83=81=ED=83=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utl/fcc/service/VisitEduTransUtil.java | 77 + .../asgnmInfo/web/VEAdultAsgnmController.java | 11 + .../endInfo/web/VEAdultEduEndController.java | 1688 +++++++++-------- .../asgnmInfo/service/VEInstrAsgnmVO.java | 8 + .../asgnmInfo/web/VEAsgnmController.java | 12 +- .../endInfo/web/VEEduEndController.java | 6 + .../ve/asgnm/VEAcmdtAplct_SQL_Tibero.xml | 7 +- .../ve/asgnm/VEAsgnm_MIX_SQL_Tibero.xml | 4 +- .../tngrVisitEdu/eduAsgnmCnfrmMngList.jsp | 2 +- .../asgnmInfo/instrAsgnmList.jsp | 61 +- .../asgnmInfo/instrAsgnmRqstList.jsp | 62 +- .../adultVisitEdu/endInfo/instrEduEndList.jsp | 60 +- .../tngrVisitEdu/asgnmInfo/instrAsgnmList.jsp | 99 +- .../endInfo/instrEduEndDetail.jsp | 20 +- 14 files changed, 1148 insertions(+), 969 deletions(-) create mode 100644 src/main/java/kcc/let/utl/fcc/service/VisitEduTransUtil.java diff --git a/src/main/java/kcc/let/utl/fcc/service/VisitEduTransUtil.java b/src/main/java/kcc/let/utl/fcc/service/VisitEduTransUtil.java new file mode 100644 index 00000000..d7ab6574 --- /dev/null +++ b/src/main/java/kcc/let/utl/fcc/service/VisitEduTransUtil.java @@ -0,0 +1,77 @@ +/** + * @Class Name : VisitEduTransUtil.java + * @Description : 찾교 데이터 변환 관련 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.13 이삼섭 최초 생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 02. 13 + * @version 1.0 + * @see + * + */ + +package kcc.let.utl.fcc.service; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +/** + * 숫자 데이터 처리 관련 유틸리티 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.02.13 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2009.02.13  이삼섭          최초 생성
+ *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
+ *
+ * 
+ */ + +public class VisitEduTransUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(VisitEduTransUtil.class); + + public static List transData4feeSum(List p_vEInstrAsgnmVOList){ + + p_vEInstrAsgnmVOList.stream().forEach(t-> { + + int i_feeSum4Dp = 0; + + int i_instrFee = 0; + int i_specialWorkAllow = 0; + int i_distanceAllow = 0; + int i_trafficFee = 0; + int i_acmdtFee = 0; + + try { i_instrFee = Integer.parseInt(t.getInstrFee()); }catch(Exception ex) { i_instrFee = 0; System.out.println(ex.toString()); } + try { i_specialWorkAllow = Integer.parseInt(t.getSpecialWorkAllow()); }catch(Exception ex) { i_specialWorkAllow = 0; System.out.println(ex.toString()); } + try { i_distanceAllow = Integer.parseInt(t.getDistanceAllow()); }catch(Exception ex) { i_distanceAllow = 0; System.out.println(ex.toString()); } + try { i_trafficFee = Integer.parseInt(t.getTrafficFee()); }catch(Exception ex) { i_trafficFee = 0; System.out.println(ex.toString()); } + try { i_acmdtFee = Integer.parseInt(t.getAcmdtFee()); }catch(Exception ex) { i_acmdtFee = 0; System.out.println(ex.toString()); } + + i_feeSum4Dp = i_instrFee + i_specialWorkAllow + i_distanceAllow + i_trafficFee + i_acmdtFee; + + try { t.setFeeSum4Dp(Integer.toString(i_feeSum4Dp)); } catch (Exception e) { e.printStackTrace(); } + + System.out.println("i_feeSum4Dp"); + System.out.println(i_feeSum4Dp); + System.out.println(t.getFeeSum4Dp()); + + }); + + return p_vEInstrAsgnmVOList; + } +} diff --git a/src/main/java/kcc/ve/instr/adultVisitEdu/asgnmInfo/web/VEAdultAsgnmController.java b/src/main/java/kcc/ve/instr/adultVisitEdu/asgnmInfo/web/VEAdultAsgnmController.java index 8b2fbc28..9cd6b91e 100644 --- a/src/main/java/kcc/ve/instr/adultVisitEdu/asgnmInfo/web/VEAdultAsgnmController.java +++ b/src/main/java/kcc/ve/instr/adultVisitEdu/asgnmInfo/web/VEAdultAsgnmController.java @@ -27,6 +27,7 @@ import kcc.com.utl.user.service.CheckLoginUtil; 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.VisitEduTransUtil; import kcc.ve.cmm.VeConstants; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; @@ -146,6 +147,11 @@ public class VEAdultAsgnmController { model.addAttribute("paginationInfo", paginationInfo); + //fee 계산하기 + //feeSum4Dp + vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList); + + //대상 리스트, 페이징 정보 전달 model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); @@ -256,6 +262,11 @@ public class VEAdultAsgnmController { model.addAttribute("paginationInfo", paginationInfo); + //fee 계산하기 + //feeSum4Dp + vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList); + + //대상 리스트, 페이징 정보 전달 model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); diff --git a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java index 928adc42..fa46f67a 100644 --- a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java +++ b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java @@ -1,841 +1,847 @@ -package kcc.ve.instr.adultVisitEdu.endInfo.web; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URLEncoder; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.util.FileCopyUtils; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartHttpServletRequest; -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.EgovMessageSource; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.FileVO; -import kcc.com.cmm.util.IpUtil; -import kcc.com.cmm.web.EgovFileDownloadController; -import kcc.com.utl.user.service.CheckFileUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.sch.service.SchduleManageService; -import kcc.kccadr.sch.service.SchduleManageVO; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; - - -@Controller -public class VEAdultEduEndController { - - // eGov 공통 메세지 - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - //강사상세 정보 - @Resource(name="vEInstrDetailService") - private VEInstrDetailService vEInstrDetailService; - - //결과보고 - @Resource(name="vEEduRsltRprtService") - private VEEduRsltRprtService vEEduRsltRprtService; - - //배정 MIX 정보 - @Resource(name="vEAsgnmMIXService") - private VEAsgnmMIXService vEAsgnmMIXService; - - //강의 - @Resource(name="vEPrcsService") - private VEPrcsService vEPrcsService; - - //강사료 - @Resource(name="vEInstrFeeService") - private VEInstrFeeService vEInstrFeeService; - - //숙박 - @Resource(name="vEAcmdtAplctService") - private VEAcmdtAplctService vEAcmdtAplctService; - - //VO 암/복호화 - @Resource(name="egovCryptoUtil4VO") - private EgovCryptoUtil4VO egovCryptoUtil4VO; - - // 파일첨부 - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - //파일 체크 util - @Resource(name = "checkFileUtil") - private CheckFileUtil checkFileUtil; - - //NOTI 서비스 - @Resource(name="vEAsgnmNotiService") - private VEAsgnmNotiService vEAsgnmNotiService; - - //일정 정보 - @Resource(name = "schduleManageService") - private SchduleManageService schduleManageService; - - private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); - - /** - * 브라우저 구분 얻기. - * - * @param request - * @return - */ - private String getBrowser(HttpServletRequest request) { - String header = request.getHeader("User-Agent"); - if (header.indexOf("MSIE") > -1) { - return "MSIE"; - } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 - return "Trident"; - } else if (header.indexOf("Chrome") > -1) { - return "Chrome"; - } else if (header.indexOf("Opera") > -1) { - return "Opera"; - } - return "Firefox"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") - public String instrEduEndList( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , 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); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") - public String instrEduEndSchdl( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , 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); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; - } - - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") - @ResponseBody - public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { - schduleManageVO.setAprvlCd("60"); - schduleManageVO.setLctrDivCd("10"); - - schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); - - return schduleManageService.selectSchManageStatusList(schduleManageVO); - } - - //청소년강사 강의 종료교육 상세 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") - public String instrEduEndDetail( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - try{ - System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - // 교육차시 강사배정 정보 - VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); - vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); - - // 강사 상세정보 - VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); - vEInstrDetailVOInfo.setInstrDiv("20"); - vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); - vEInstrDetailVOInfo.setUseYn("Y"); - vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); - if (vEInstrDetailVOInfo != null) { - //데이터 복호화 - VO 단위로 만들어서 사용 - VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); - vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); - } - - //강사료 - VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); - instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); - instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); - - instrFee = vEInstrFeeService.selectDetail(instrFee); - - //강사료 제외 합계 - int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) - + Integer.parseInt(instrFee.getBsnsTripFee()) - + Integer.parseInt(instrFee.getSpareFee()); - instrFee.setInstrFeeSum(instrFeeSum); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setUseYn("Y"); - vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); - List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); - model.addAttribute("prcsList", vEPrcsDetailVOList); - - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrAsgnmVOInfo != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); - model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); - model.addAttribute("info", vEInstrAsgnmVOInfo); - model.addAttribute("info2", vEInstrDetailVOInfo); - model.addAttribute("instrFee", instrFee); - model.addAttribute("cryptoUtil",egovCryptoUtil); - - //20220222 우영두 추가 - //강의내역 NOTI 입력 - VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); - - vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); - vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - } - - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; - } - - /** - * 결과보고 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") - public String filePopup( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEEduRprtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEEduRprtVO", vEEduRprtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; - } - - /** - * 숙박신청자 영수증 등록 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") - public String eduAcmdtRegPop( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrFeeAcmdtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; - } - - /** - * 결과보고 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") - public ModelAndView filePopupAjax( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - 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 - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - if (fileVEEduAplctVO != null) { - s_atchFileId = fileVEEduAplctVO.getAtchFileId(); - } - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEEduRprtVO.setAtchFileId(s_atchFileId); - - //최초등록 시 - if(fileVEEduAplctVO == null) { - vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); - } else { //수정 시 - vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); - } - - vEEduRsltRprtService.insert(vEEduRprtVO); - - }catch(Exception ex) { - System.out.println("Exception vEEduRsltRprtService.insert"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - /** - * 영수증 등록 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") - public ModelAndView eduAcmdtPopupAjax( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - 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 - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - s_atchFileId = acmdtVO.getAtchFileId(); - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); - vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); - - vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); - - }catch(Exception ex) { - System.out.println("Exception vEAcmdtAplctService.update"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - //첨부파일 이름 변경하여 다운로드 - /** - * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. - * - * @param commandMap - * @param response - * @throws Exception - */ - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") - public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { - - String atchFileId = (String) commandMap.get("atchFileId"); - String fileSn = (String) commandMap.get("fileSn"); - String newFileNm = (String) commandMap.get("newFileNm"); - - /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ - - /*if (isAuthenticated) {*/ - - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(atchFileId); - fileVO.setFileSn(fileSn); - FileVO fvo = fileService.selectFileInf(fileVO); - if(fvo == null){ - response.setContentType("application/x-msdownload"); - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - return ; - } - - File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); - long fSize = uFile.length(); - - if (fSize > 0) { - String mimetype = "application/x-msdownload"; - - response.setContentType(mimetype); -// setDisposition(fvo.getOrignlFileNm(), request, response); - setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 - //response.setContentLength(fSize); - - BufferedInputStream in = null; - BufferedOutputStream out = null; - - try { - in = new BufferedInputStream(new FileInputStream(uFile)); - out = new BufferedOutputStream(response.getOutputStream()); - - FileCopyUtils.copy(in, out); - out.flush(); - } catch (Exception ex) { - LOGGER.debug("IGNORED: {}", ex.getMessage()); - } finally { - if (in != null) { - try { - in.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - if (out != null) { - try { - out.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - } - - } else { - response.setContentType("application/x-msdownload"); - - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - } - /*}*/ - } - - - - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEInstrAsgnmVO p_vEInstrAsgnmVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); - paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEInstrAsgnmVO setPagingStep2( - VEInstrAsgnmVO p_vEInstrAsgnmVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); - p_vEInstrAsgnmVO.setSearchSortOrd("desc"); - } - - return p_vEInstrAsgnmVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEInstrAsgnmVOList - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - /** - * Disposition 지정하기. - * - * @param filename - * @param request - * @param response - * @throws Exception - */ - private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { - String browser = getBrowser(request); - - String dispositionPrefix = "attachment; filename="; - String encodedFilename = null; - - if (browser.equals("MSIE")) { - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Firefox")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Opera")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Chrome")) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < filename.length(); i++) { - char c = filename.charAt(i); - if (c > '~') { - sb.append(URLEncoder.encode("" + c, "UTF-8")); - } else { - sb.append(c); - } - } - encodedFilename = sb.toString(); - } else { - //throw new RuntimeException("Not supported browser"); - throw new IOException("Not supported browser"); - } - -// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 - response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); - - if ("Opera".equals(browser)) { - response.setContentType("application/octet-stream;charset=UTF-8"); - } - } - -} +package kcc.ve.instr.adultVisitEdu.endInfo.web; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartHttpServletRequest; +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.EgovMessageSource; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.util.IpUtil; +import kcc.com.cmm.web.EgovFileDownloadController; +import kcc.com.utl.user.service.CheckFileUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.sch.service.SchduleManageService; +import kcc.kccadr.sch.service.SchduleManageVO; +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.VisitEduTransUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; + + +@Controller +public class VEAdultEduEndController { + + // eGov 공통 메세지 + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //강사상세 정보 + @Resource(name="vEInstrDetailService") + private VEInstrDetailService vEInstrDetailService; + + //결과보고 + @Resource(name="vEEduRsltRprtService") + private VEEduRsltRprtService vEEduRsltRprtService; + + //배정 MIX 정보 + @Resource(name="vEAsgnmMIXService") + private VEAsgnmMIXService vEAsgnmMIXService; + + //강의 + @Resource(name="vEPrcsService") + private VEPrcsService vEPrcsService; + + //강사료 + @Resource(name="vEInstrFeeService") + private VEInstrFeeService vEInstrFeeService; + + //숙박 + @Resource(name="vEAcmdtAplctService") + private VEAcmdtAplctService vEAcmdtAplctService; + + //VO 암/복호화 + @Resource(name="egovCryptoUtil4VO") + private EgovCryptoUtil4VO egovCryptoUtil4VO; + + // 파일첨부 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + //NOTI 서비스 + @Resource(name="vEAsgnmNotiService") + private VEAsgnmNotiService vEAsgnmNotiService; + + //일정 정보 + @Resource(name = "schduleManageService") + private SchduleManageService schduleManageService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); + + /** + * 브라우저 구분 얻기. + * + * @param request + * @return + */ + private String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") + public String instrEduEndList( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , 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); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //fee 계산하기 + //feeSum4Dp + vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") + public String instrEduEndSchdl( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , 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); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; + } + + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") + @ResponseBody + public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { + schduleManageVO.setAprvlCd("60"); + schduleManageVO.setLctrDivCd("10"); + + schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); + + return schduleManageService.selectSchManageStatusList(schduleManageVO); + } + + //청소년강사 강의 종료교육 상세 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") + public String instrEduEndDetail( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + try{ + System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + // 교육차시 강사배정 정보 + VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); + vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); + + // 강사 상세정보 + VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); + vEInstrDetailVOInfo.setInstrDiv("20"); + vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); + vEInstrDetailVOInfo.setUseYn("Y"); + vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); + if (vEInstrDetailVOInfo != null) { + //데이터 복호화 - VO 단위로 만들어서 사용 + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); + } + + //강사료 + VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); + instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); + instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); + + instrFee = vEInstrFeeService.selectDetail(instrFee); + + //강사료 제외 합계 + int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) + + Integer.parseInt(instrFee.getBsnsTripFee()) + + Integer.parseInt(instrFee.getSpareFee()); + instrFee.setInstrFeeSum(instrFeeSum); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); + List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); + model.addAttribute("prcsList", vEPrcsDetailVOList); + + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrAsgnmVOInfo != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); + model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); + model.addAttribute("info", vEInstrAsgnmVOInfo); + model.addAttribute("info2", vEInstrDetailVOInfo); + model.addAttribute("instrFee", instrFee); + model.addAttribute("cryptoUtil",egovCryptoUtil); + + //20220222 우영두 추가 + //강의내역 NOTI 입력 + VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); + + vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); + vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + } + + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; + } + + /** + * 결과보고 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") + public String filePopup( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEEduRprtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEEduRprtVO", vEEduRprtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; + } + + /** + * 숙박신청자 영수증 등록 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") + public String eduAcmdtRegPop( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrFeeAcmdtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; + } + + /** + * 결과보고 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") + public ModelAndView filePopupAjax( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + 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 + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + if (fileVEEduAplctVO != null) { + s_atchFileId = fileVEEduAplctVO.getAtchFileId(); + } + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEEduRprtVO.setAtchFileId(s_atchFileId); + + //최초등록 시 + if(fileVEEduAplctVO == null) { + vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); + } else { //수정 시 + vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); + } + + vEEduRsltRprtService.insert(vEEduRprtVO); + + }catch(Exception ex) { + System.out.println("Exception vEEduRsltRprtService.insert"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + /** + * 영수증 등록 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") + public ModelAndView eduAcmdtPopupAjax( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + 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 + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + s_atchFileId = acmdtVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); + vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); + + vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); + + }catch(Exception ex) { + System.out.println("Exception vEAcmdtAplctService.update"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + //첨부파일 이름 변경하여 다운로드 + /** + * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. + * + * @param commandMap + * @param response + * @throws Exception + */ + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") + public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + + String atchFileId = (String) commandMap.get("atchFileId"); + String fileSn = (String) commandMap.get("fileSn"); + String newFileNm = (String) commandMap.get("newFileNm"); + + /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ + + /*if (isAuthenticated) {*/ + + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(atchFileId); + fileVO.setFileSn(fileSn); + FileVO fvo = fileService.selectFileInf(fileVO); + if(fvo == null){ + response.setContentType("application/x-msdownload"); + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + return ; + } + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + response.setContentType(mimetype); +// setDisposition(fvo.getOrignlFileNm(), request, response); + setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 + //response.setContentLength(fSize); + + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (Exception ex) { + LOGGER.debug("IGNORED: {}", ex.getMessage()); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + if (out != null) { + try { + out.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + } + + } else { + response.setContentType("application/x-msdownload"); + + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + } + /*}*/ + } + + + + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEInstrAsgnmVO p_vEInstrAsgnmVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); + paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEInstrAsgnmVO setPagingStep2( + VEInstrAsgnmVO p_vEInstrAsgnmVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); + p_vEInstrAsgnmVO.setSearchSortOrd("desc"); + } + + return p_vEInstrAsgnmVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEInstrAsgnmVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + + /** + * Disposition 지정하기. + * + * @param filename + * @param request + * @param response + * @throws Exception + */ + private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { + String browser = getBrowser(request); + + String dispositionPrefix = "attachment; filename="; + String encodedFilename = null; + + if (browser.equals("MSIE")) { + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Firefox")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Opera")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Chrome")) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < filename.length(); i++) { + char c = filename.charAt(i); + if (c > '~') { + sb.append(URLEncoder.encode("" + c, "UTF-8")); + } else { + sb.append(c); + } + } + encodedFilename = sb.toString(); + } else { + //throw new RuntimeException("Not supported browser"); + throw new IOException("Not supported browser"); + } + +// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 + response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); + + if ("Opera".equals(browser)) { + response.setContentType("application/octet-stream;charset=UTF-8"); + } + } + +} diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/service/VEInstrAsgnmVO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/service/VEInstrAsgnmVO.java index 1dec77ea..119d4285 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/service/VEInstrAsgnmVO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/service/VEInstrAsgnmVO.java @@ -155,6 +155,8 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable { private String aplctCn; //신청내용 private String rqstCn; //요청내용 + private String feeSum4Dp; //화면에 표시되는 fee 계산용 + public String getMemoCn() { return memoCn; @@ -774,5 +776,11 @@ public class VEInstrAsgnmVO extends ComDefaultVO implements Serializable { public void setRqstCn(String rqstCn) { this.rqstCn = rqstCn; } + public String getFeeSum4Dp() { + return feeSum4Dp; + } + public void setFeeSum4Dp(String feeSum4Dp) { + this.feeSum4Dp = feeSum4Dp; + } } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/web/VEAsgnmController.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/web/VEAsgnmController.java index 7853382e..cb72fb2c 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/web/VEAsgnmController.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/asgnmInfo/web/VEAsgnmController.java @@ -23,6 +23,7 @@ import kcc.com.utl.user.service.CheckLoginUtil; 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.VisitEduTransUtil; import kcc.ve.cmm.VeConstants; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; @@ -279,9 +280,11 @@ public class VEAsgnmController { if(StringUtils.isNotEmpty(acmdtCnfrmVO.getAcmdtSbmtYn())) t.setAcmdtSbmtYn(acmdtCnfrmVO.getAcmdtSbmtYn()); if(StringUtils.isNotEmpty(acmdtCnfrmVO.getAcmdtSbmtYn())) - t.setAcmdtAprvlCd(acmdtCnfrmVO.getAcmdtSbmtYn()); + //t.setAcmdtAprvlCd(acmdtCnfrmVO.getAcmdtSbmtYn()); + ; if(StringUtils.isNotEmpty(acmdtCnfrmVO.getAcmdtSbmtYn())) - t.setAcmdtFee(acmdtCnfrmVO.getAcmdtSbmtYn()); + t.setAcmdtFee(acmdtCnfrmVO.getAcmdtSbmtYn()); + } } catch (Exception e) { // TODO Auto-generated catch block @@ -296,6 +299,11 @@ public class VEAsgnmController { model.addAttribute("paginationInfo", paginationInfo); + //fee 계산하기 + //feeSum4Dp + vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList); + + //대상 리스트, 페이징 정보 전달 model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/endInfo/web/VEEduEndController.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/endInfo/web/VEEduEndController.java index 474b5fb0..a0dfd837 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/endInfo/web/VEEduEndController.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/endInfo/web/VEEduEndController.java @@ -39,6 +39,7 @@ import kcc.com.utl.user.service.CheckLoginUtil; 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.VisitEduTransUtil; import kcc.ve.cmm.VeConstants; import kcc.ve.cmm.VeInstrFeeMng; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; @@ -211,6 +212,11 @@ public class VEEduEndController { model.addAttribute("paginationInfo", paginationInfo); + //fee 계산하기 + //feeSum4Dp + vEInstrAsgnmVOList = VisitEduTransUtil.transData4feeSum(vEInstrAsgnmVOList); + + //대상 리스트, 페이징 정보 전달 model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); diff --git a/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAcmdtAplct_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAcmdtAplct_SQL_Tibero.xml index aaa0ec12..1f7806a9 100644 --- a/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAcmdtAplct_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAcmdtAplct_SQL_Tibero.xml @@ -205,6 +205,7 @@ , bb.aplctCn , bb.acmdtFee , bb.acmdtAplctOrd + , bb.aprvlCn FROM ( SELECT a.EDU_HOPE_DT, b.USER_ID @@ -227,13 +228,17 @@ , a.aprvl_cd AS aprvlCd , a.aplct_cn AS aplctCn , a.acmdt_fee AS acmdtFee - , a.acmdt_aplct_ord AS AcmdtAplctOrd + , a.acmdt_aplct_ord AS AcmdtAplctOrd + , a.aprvl_cn AS aprvlCn FROM ve_acmdt_aplct a , ve_edu_chasi b , ve_edu_chasi_instr_asgnm c WHERE 1 =1 + /* + 숙박신청한 경우가 있으면 모두 가져와야 한다. AND NVL(a.APRVL_CD,'10') ='10' + */ AND a.SBMT_YN ='Y' AND a.USE_YN ='Y' AND a.edu_aplct_ord = b.edu_aplct_ord diff --git a/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAsgnm_MIX_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAsgnm_MIX_SQL_Tibero.xml index 4e2d1ce1..dce722ef 100644 --- a/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAsgnm_MIX_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/asgnm/VEAsgnm_MIX_SQL_Tibero.xml @@ -653,7 +653,7 @@ ,cnt ,notiCnt FROM - ( SELECT DISTINCT + ( SELECT a.user_id AS userId , a.edu_aplct_ord AS eduAplctOrd , a.edu_chasi_ord AS eduChasiOrd @@ -688,7 +688,7 @@ LEFT OUTER JOIN ve_acmdt_aplct d ON ( a.edu_aplct_ord = d.edu_aplct_ord - + and a.edu_chasi_ord = d.edu_chasi_ord and d.aplct_cn is not null ) LEFT OUTER JOIN ve_instr_fee e diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduAsgnmCnfrmMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduAsgnmCnfrmMngList.jsp index bce5f939..6e49f6d9 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduAsgnmCnfrmMngList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduAsgnmCnfrmMngList.jsp @@ -363,7 +363,7 @@ 확정 - 미확정 + 반려