diff --git a/src/main/java/kcc/let/uss/olp/qri/service/EgovQustnrRespondInfoService.java b/src/main/java/kcc/let/uss/olp/qri/service/EgovQustnrRespondInfoService.java index 88d1fffd..3e82df82 100644 --- a/src/main/java/kcc/let/uss/olp/qri/service/EgovQustnrRespondInfoService.java +++ b/src/main/java/kcc/let/uss/olp/qri/service/EgovQustnrRespondInfoService.java @@ -6,6 +6,7 @@ import java.util.Map; import kcc.com.cmm.ComDefaultVO; import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; /** * 설문조사 Service Class 구현 * @author 공통서비스 장동한 @@ -164,4 +165,6 @@ public interface EgovQustnrRespondInfoService { void deleteChasiStatus(VEEduAplctVO vEEduAplctVO); public List selectQustnrDetail(QustnrRespondInfoVO qustnrVO); + + public List selectQustnr5060(VEPrcsDetailVO vEPrcsDetailVO); } diff --git a/src/main/java/kcc/let/uss/olp/qri/service/impl/EgovQustnrRespondInfoServiceImpl.java b/src/main/java/kcc/let/uss/olp/qri/service/impl/EgovQustnrRespondInfoServiceImpl.java index 57cbb1d4..b5b8eb67 100644 --- a/src/main/java/kcc/let/uss/olp/qri/service/impl/EgovQustnrRespondInfoServiceImpl.java +++ b/src/main/java/kcc/let/uss/olp/qri/service/impl/EgovQustnrRespondInfoServiceImpl.java @@ -10,6 +10,7 @@ import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import javax.annotation.Resource; @@ -249,5 +250,9 @@ public class EgovQustnrRespondInfoServiceImpl extends EgovAbstractServiceImpl im public List selectQustnrDetail(QustnrRespondInfoVO qustnrVO) { return dao.selectQustnrDetail(qustnrVO); } + @Override + public List selectQustnr5060(VEPrcsDetailVO vEPrcsDetailVO) { + return dao.selectQustnr5060(vEPrcsDetailVO); + } } diff --git a/src/main/java/kcc/let/uss/olp/qri/service/impl/QustnrRespondInfoDao.java b/src/main/java/kcc/let/uss/olp/qri/service/impl/QustnrRespondInfoDao.java index 530c736e..02183a05 100644 --- a/src/main/java/kcc/let/uss/olp/qri/service/impl/QustnrRespondInfoDao.java +++ b/src/main/java/kcc/let/uss/olp/qri/service/impl/QustnrRespondInfoDao.java @@ -8,6 +8,7 @@ import kcc.com.cmm.ComDefaultVO; import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import org.springframework.stereotype.Repository; /** @@ -214,4 +215,8 @@ public class QustnrRespondInfoDao extends EgovAbstractDAO { public List selectQustnrDetail(QustnrRespondInfoVO qustnrVO) { return (List) list("QustnrRespondInfo.selectQustnrDetail", qustnrVO); } + + public List selectQustnr5060(VEPrcsDetailVO vEPrcsDetailVO) { + return (List) list("QustnrRespondInfo.selectQustnr5060", vEPrcsDetailVO); + } } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java index b08dc250..80ebb993 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsDetailVO.java @@ -159,8 +159,9 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable { private String send; private String chrgNm; - private String insttNm; - private String instrNm; + private String insttNm; + + private String respondId; @@ -787,12 +788,13 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable { public void setInsttNm(String insttNm) { this.insttNm = insttNm; } - public String getInstrNm() { - return instrNm; + public String getRespondId() { + return respondId; } - public void setInstrNm(String instrNm) { - this.instrNm = instrNm; + public void setRespondId(String respondId) { + this.respondId = respondId; } + } diff --git a/src/main/java/kcc/ve/oprtn/fndtnEnhanceTrn/prcsAplctPrdMng/web/FndthPrcsAplctPrdMngController.java b/src/main/java/kcc/ve/oprtn/fndtnEnhanceTrn/prcsAplctPrdMng/web/FndthPrcsAplctPrdMngController.java index d72ed363..db34b473 100644 --- a/src/main/java/kcc/ve/oprtn/fndtnEnhanceTrn/prcsAplctPrdMng/web/FndthPrcsAplctPrdMngController.java +++ b/src/main/java/kcc/ve/oprtn/fndtnEnhanceTrn/prcsAplctPrdMng/web/FndthPrcsAplctPrdMngController.java @@ -28,7 +28,12 @@ import kcc.com.cmm.service.impl.CmmUseDAO; import kcc.com.cmm.util.StringUtil; import kcc.com.utl.user.service.CheckLoginUtil; import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; +import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; @@ -137,6 +142,9 @@ public class FndthPrcsAplctPrdMngController { //과정신청기간순번 @Resource(name="vePrcsAplctPrdEtcGnrService") private EgovIdGnrService vePrcsAplctPrdEtcGnrService; + + @Resource(name = "egovQustnrRespondInfoService") + private EgovQustnrRespondInfoService egovQustnrRespondInfoService; /* // 교육신청 서비스단 @@ -344,7 +352,7 @@ public class FndthPrcsAplctPrdMngController { paramVO.setSbmtYn("Y"); if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) { - + // 20 이수 String searchQuery = "AND vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus(); paramVO.setSearchQuery(searchQuery); } @@ -1028,6 +1036,167 @@ public class FndthPrcsAplctPrdMngController { } + + /** + * @methodName : instrCostPopup + * @author : 이호영 + * @date : 2023.11.27 + * @description : + * @param vEPrcsDetailVO + * @param model + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup.do") + public String instrCostPopup( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + +// List vEPrcsDetailVOList = egovQustnrRespondInfoService.selectQustnr5060(vEPrcsDetailVO); + //해당 과정을 제출한 사용자 정보를 가져온다. + VEEduAplctVO paramVO = new VEEduAplctVO(); + paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + paramVO.setSbmtYn("Y"); + + // 20 이수 + String searchQuery = "AND vadi.APLCT_STATE_CD = 20"; + paramVO.setSearchQuery(searchQuery); + // 검색 - 날짜 + paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt()); + paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt()); + // 검색 - 검색어 + paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus()); + + + List vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO); + vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); + + long totalParticipants = vEPrcsDetailVOList.size(); + long respondents = vEPrcsDetailVOList.stream().filter(vo -> vo.getQestRsltExists()).count(); + long nonRespondents = totalParticipants - respondents; + double responseRate = ((double) respondents / totalParticipants) * 100; + + model.addAttribute("totalParticipants", totalParticipants); + model.addAttribute("respondents", respondents); + model.addAttribute("nonRespondents", nonRespondents); + model.addAttribute("responseRate", String.format("%.2f", responseRate) + "%"); + +System.out.println("참석자: " + totalParticipants); +System.out.println("응답자: " + respondents); +System.out.println("무응답: " + nonRespondents); +System.out.println("응답률: " + String.format("%.2f", responseRate) + "%"); + + + return "/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup"; + } + + + + @RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/selectSrvyInfoAjax.do") + public ModelAndView fndtnInAdminSelectSrvyInfoAjax( HttpServletRequest request + , ModelMap model + , VEEduAplctVO veEduAplctVO + , QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + try { + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); + if (loginVO == null) { + modelAndView.addObject("result", "fail"); + modelAndView.addObject("msg", "로그인 해주세요."); + return modelAndView; + } + + + List qustnrRespondInfoVOList = egovQustnrRespondInfoService.selectQustnrDetail(qustnrRespondInfoVO); + + modelAndView.addObject("data", qustnrRespondInfoVOList); + modelAndView.addObject("respondId", qustnrRespondInfoVOList.get(0).getRespondId()); + modelAndView.addObject("result", "success"); + }catch(Exception ex) { + System.out.println("Exception vEEduAplctOnlnService.updateBulk"); + modelAndView.addObject("result", "fail"); + modelAndView.addObject("msg", "관리자에게 문의해 주세요"); + } + return modelAndView; + } + + + @RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/mergeSrvyInfoAjax.do") + public ModelAndView adminMergeSrvyInfoAjax( HttpServletRequest request + , ModelMap model + , VEEduAplctVO veEduAplctVO + , QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + try { + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); + if (loginVO == null) { + modelAndView.addObject("result", "fail"); + modelAndView.addObject("msg", "로그인 해주세요."); + return modelAndView; + } + + qustnrRespondInfoVO.getResultList().stream() + .forEach(item -> { + + item.setQustnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId()); + item.setRespondId(qustnrRespondInfoVO.getRespondId()); + item.setFrstRegisterId(qustnrRespondInfoVO.getRespondId()); + item.setLastUpdusrId(loginVO.getId()); + item.setEduAplctOrd(veEduAplctVO.getEduAplctOrd()); + + if("verySatisfied".equals(item.getResponseRadio())) { + item.setVerySatisfied("1"); + } + if("satisfied".equals(item.getResponseRadio())) { + item.setSatisfied("1"); + } + if("neither".equals(item.getResponseRadio())) { + item.setNeither("1"); + } + if("dissatisfied".equals(item.getResponseRadio())) { + item.setDissatisfied("1"); + } + if("veryDissatisfied".equals(item.getResponseRadio())) { + item.setVeryDissatisfied("1"); + } + + try { + egovQustnrRespondInfoService.updateSrvyInfo(item); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + }); + + // 설문 문항 결과 등록 +// for(int i=0; i < qustnrRespondInfoVO.getResultList().size(); i++) { +// qustnrRespondInfoVO.getResultList().get(i).setQustnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId()); +// qustnrRespondInfoVO.getResultList().get(i).setRespondId(loginVO.getId()); +// qustnrRespondInfoVO.getResultList().get(i).setFrstRegisterId(loginVO.getId()); +// qustnrRespondInfoVO.getResultList().get(i).setLastUpdusrId(loginVO.getId()); +// qustnrRespondInfoVO.getResultList().get(i).setLastUpdusrId(loginVO.getId()); +// qustnrRespondInfoVO.getResultList().get(i).setEduAplctOrd(veEduAplctVO.getEduAplctOrd()); + +// if("update".equals(qustnrRespondInfoVO.getQustnrIemType())) { +// egovQustnrRespondInfoService.updateSrvyInfo(qustnrRespondInfoVO.getResultList().get(i)); +// }else { +// egovQustnrRespondInfoService.insertSrvyInfo(qustnrRespondInfoVO.getResultList().get(i)); +// } +// } + }catch(Exception ex) { + System.out.println("Exception vEEduAplctOnlnService.updateBulk"); + } + modelAndView.addObject("result", "success"); + return modelAndView; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // diff --git a/src/main/resources/egovframework/sqlmap/let/uss/olp/qri/EgovQustnrRespondInfo_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/uss/olp/qri/EgovQustnrRespondInfo_SQL_Tibero.xml index 148cfb31..50255918 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/olp/qri/EgovQustnrRespondInfo_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/olp/qri/EgovQustnrRespondInfo_SQL_Tibero.xml @@ -9,6 +9,7 @@ + + /* QustnrRespondInfo.selectQustnr5060 */ + SELECT + a.qustnr_tmplat_id AS qustnrTmplatId, + a.qestnr_id AS qestnrId, + a.qustnr_qesitm_id AS qustnrQesitmId, + a.qustnr_rslt_id AS qustnrRsltId, + a.edu_aplct_ord AS eduAplctOrd, + a.edu_chasi_ord AS eduChasiOrd, + a.respond_id AS respondId, + a.very_satisfied AS verySatisfied, + a.satisfied AS satisfied, + a.neither AS neither, + a.dissatisfied AS dissatisfied, + a.very_dissatisfied AS veryDissatisfied, + a.answer AS answer, + a.qustnr_iem_id AS qustnrIemId + FROM + LETTNQESTNRRSLTDETAIL a + WHERE + RESPOND_ID = #respondId# + AND EDU_APLCT_ORD = #eduAplctOrd# + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.jsp index e786aade..89e14a99 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.jsp @@ -28,6 +28,7 @@ 교육과정관리 + +
+ + + +
@@ -443,7 +473,8 @@ - +<%-- --%> + 미입력 diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngDetail.jsp index 6c8b4ab6..4219a672 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngDetail.jsp @@ -520,7 +520,7 @@ - 신청자가 없습니다. + 신청자가 없습니다. diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup.jsp index 6b24d0a4..94487da0 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/fndthEnhanceTrn/popup/lctrEvalPopup.jsp @@ -32,110 +32,244 @@ 강의배정팝업 - "> - "> - " /> - + + "> + ">

교육 내용에 대한 전반적 만족도 평가

- +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+

참석자

+
+ + +

응답율

+
+ +
+

응답자

+
+ + +

무응답

+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
평가문항매우만족만족보통불만족매우불만족
+
+
- - - - - - +