2025-10-22 17:41 설문 이수증 수정
This commit is contained in:
parent
8d2ae77dee
commit
49ed77bd98
@ -38,8 +38,11 @@ import kcc.com.cmm.spring.data.util.ExcelUtil;
|
|||||||
import kcc.com.cmm.util.StringUtil;
|
import kcc.com.cmm.util.StringUtil;
|
||||||
import kcc.com.utl.user.service.CheckFileUtil;
|
import kcc.com.utl.user.service.CheckFileUtil;
|
||||||
import kcc.com.utl.user.service.CheckLoginUtil;
|
import kcc.com.utl.user.service.CheckLoginUtil;
|
||||||
|
import kcc.com.utl.user.service.QustnrCommonUtil;
|
||||||
import kcc.let.uat.uia.service.SsoLoginVO;
|
import kcc.let.uat.uia.service.SsoLoginVO;
|
||||||
import kcc.let.uss.notify.service.NotifyManageService;
|
import kcc.let.uss.notify.service.NotifyManageService;
|
||||||
|
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.let.utl.fcc.service.EgovCryptoUtil;
|
||||||
import kcc.let.utl.fcc.service.ITNotiUtil;
|
import kcc.let.utl.fcc.service.ITNotiUtil;
|
||||||
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
|
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
|
||||||
@ -57,6 +60,7 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
|
|||||||
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
|
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
|
||||||
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
|
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
|
||||||
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
|
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
|
||||||
|
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 기반강화연수(관리자)
|
* 기반강화연수(관리자)
|
||||||
@ -170,6 +174,17 @@ public class CndtnPrcsInfoMngController {
|
|||||||
@Resource(name="eduAplctGnrService")
|
@Resource(name="eduAplctGnrService")
|
||||||
private EgovIdGnrService eduAplctGnrService;
|
private EgovIdGnrService eduAplctGnrService;
|
||||||
|
|
||||||
|
// 설문 util
|
||||||
|
@Resource(name = "qustnrCommonUtil")
|
||||||
|
private QustnrCommonUtil qustnrCommonUtil;
|
||||||
|
|
||||||
|
// 설문 복합 VEA_
|
||||||
|
@Resource(name = "vEALettnQestnrMIXService")
|
||||||
|
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
|
||||||
|
|
||||||
|
@Resource(name = "egovQustnrRespondInfoService")
|
||||||
|
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 기반강화연수 과정 관리 목록 화면
|
* 기반강화연수 과정 관리 목록 화면
|
||||||
*/
|
*/
|
||||||
@ -1324,6 +1339,92 @@ public class CndtnPrcsInfoMngController {
|
|||||||
model.addAttribute("instrAsgnmList", instrAsgnmList);
|
model.addAttribute("instrAsgnmList", instrAsgnmList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//설문 문항 정보
|
||||||
|
try {
|
||||||
|
model = qustnrCommonUtil._qustnrQesItm(
|
||||||
|
model
|
||||||
|
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
|
||||||
|
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
|
||||||
|
, "QTMPLA_0000000000001"
|
||||||
|
, vEALettnQestnrMIXService
|
||||||
|
, egovQustnrRespondInfoService
|
||||||
|
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
|
||||||
|
, ""
|
||||||
|
//, vEEduAplctVO.getEduAplctOrd()
|
||||||
|
//, vEEduAplctVO.getEduChasiOrd()
|
||||||
|
);
|
||||||
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
// 설문조사 정보
|
||||||
|
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
|
||||||
|
qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20);
|
||||||
|
QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);
|
||||||
|
|
||||||
|
// 설문조사 문항리스트 조회
|
||||||
|
Map <String, Object> commandMap =new HashMap<String, Object>();
|
||||||
|
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
|
||||||
|
commandMap.put("qestnrId",info.getQestnrId()); //문제 ID
|
||||||
|
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
|
||||||
|
*/
|
||||||
|
|
||||||
|
try{
|
||||||
|
model = qustnrCommonUtil._chasiSrvyList(
|
||||||
|
model
|
||||||
|
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
|
||||||
|
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
|
||||||
|
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
|
||||||
|
, ""
|
||||||
|
//, vEEduAplctVO.getEduAplctOrd()
|
||||||
|
//, vEEduAplctVO.getEduChasiOrd()
|
||||||
|
, vEALettnQestnrMIXService
|
||||||
|
);
|
||||||
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//개인별 만족도 관리 - chasiSrvyEAList
|
||||||
|
try{
|
||||||
|
model = qustnrCommonUtil._chasiSrvyEAList(
|
||||||
|
model
|
||||||
|
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
|
||||||
|
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
|
||||||
|
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
|
||||||
|
, ""
|
||||||
|
//, vEEduAplctVO.getEduAplctOrd()
|
||||||
|
//, vEEduAplctVO.getEduChasiOrd()
|
||||||
|
, vEALettnQestnrMIXService
|
||||||
|
);
|
||||||
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//주관식 답변 정보
|
||||||
|
try {
|
||||||
|
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
|
||||||
|
//qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
|
||||||
|
qustnrRespondInfoVO.setEduChasiOrd("");
|
||||||
|
|
||||||
|
List<QustnrRespondInfoVO> subjList = egovQustnrRespondInfoService.selectSubjList(qustnrRespondInfoVO);
|
||||||
|
if (subjList.size()>=0) {
|
||||||
|
model.addAttribute("subjInfo", subjList.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("=============================================chasiSrvyEAList=============================================");
|
||||||
|
|
||||||
|
|
||||||
return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail";
|
return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,5 +35,7 @@
|
|||||||
<sqlMap resource="egovframework/sqlmap/ve/instr/VEInstr_SQL_Postgresql.xml"/><!-- 강사테이블 -->
|
<sqlMap resource="egovframework/sqlmap/ve/instr/VEInstr_SQL_Postgresql.xml"/><!-- 강사테이블 -->
|
||||||
|
|
||||||
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEAInstrHstryMng_SQL_Postgresql.xml"/> <!-- 강사이력관리 -->
|
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEAInstrHstryMng_SQL_Postgresql.xml"/> <!-- 강사이력관리 -->
|
||||||
|
|
||||||
|
<sqlMap resource="egovframework/sqlmap/ve/qustnr/VEALettnQestnrMIX_SQL_Postgresql.xml"/> <!-- 설문지 MIX 쿼리 -->
|
||||||
|
|
||||||
</sqlMapConfig>
|
</sqlMapConfig>
|
||||||
|
|||||||
@ -0,0 +1,372 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
|
||||||
|
<!-- 설문지 정보 테이블 -->
|
||||||
|
<sqlMap namespace="VEALettnQestnrMIX">
|
||||||
|
<typeAlias alias="VEAQestnrVO" type="kcc.ve.oprtn.qestnr.service.VEAQestnrVO"/>
|
||||||
|
|
||||||
|
<!-- 설문지 양식리스트 L page -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectPagingList_LQI" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectPagingList_LQI */
|
||||||
|
<![CDATA[
|
||||||
|
select
|
||||||
|
count(a.qestnr_id) over() as totcnt
|
||||||
|
, a.qestnr_id qestnrId
|
||||||
|
, a.qustnr_sj qustnrSj
|
||||||
|
, a.qustnr_purps qustnrPurps
|
||||||
|
, a.qustnr_writng_guidance_cn qustnrWritngGuidanceCn
|
||||||
|
, a.qustnr_bgnde qustnrBgnde
|
||||||
|
, a.qustnr_endde qustnrEndde
|
||||||
|
, a.qustnr_trget qustnrTrget
|
||||||
|
, a.qustnr_tmplat_id qustnrTmplatId
|
||||||
|
, TO_CHAR(a.frst_regist_pnttm,'YYYY-MM-DD') frstRegistPnttm
|
||||||
|
, a.frst_register_id
|
||||||
|
, (select user_nm from comvnusermaster where esntl_id = a.frst_register_id ORDER BY USER_NM DESC LIMIT 1) frstRegisterNm
|
||||||
|
, a.last_updt_pnttm
|
||||||
|
, a.last_updusr_id
|
||||||
|
, a.site_id siteId
|
||||||
|
, a.site_id_cd siteIdCd
|
||||||
|
, a.before_and_after beforeAndAfter
|
||||||
|
, a.atch_file_id
|
||||||
|
, ( select count(*) from lettnqustnrqesitm where qestnr_id = a.qestnr_id ) qustnrQesitmCnt
|
||||||
|
, ( select count(*) from lettnqustnrrespondinfo where qestnr_id = a.qestnr_id ) rrspnsResultCnt
|
||||||
|
, case
|
||||||
|
when a.qustnr_endde < TO_CHAR(SYSDATE, 'YYYYMMDD') then '2' /* 종료 */
|
||||||
|
else a.sttus
|
||||||
|
end as sttus
|
||||||
|
, (select qustnr_tmplat_path_nm from lettnqustnrtmplat where qustnr_tmplat_id = a.qustnr_tmplat_id ) template_url
|
||||||
|
from
|
||||||
|
lettnqestnrinfo a
|
||||||
|
where 1=1
|
||||||
|
]]>
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isNotEqual property="searchKeyword" compareValue="">
|
||||||
|
<isEqual property="searchCondition" compareValue="">
|
||||||
|
AND ( QUSTNR_SJ LIKE '%'||#searchKeyword#||'%'
|
||||||
|
OR FRST_REGISTER_ID IN (SELECT ESNTL_ID FROM COMVNUSERMASTER WHERE USER_NM LIKE '%'||#searchKeyword#||'%'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="searchCondition" compareValue="QUSTNR_SJ">
|
||||||
|
AND QUSTNR_SJ LIKE '%'||#searchKeyword#||'%'
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="searchCondition" compareValue="FRST_REGISTER_ID">
|
||||||
|
AND FRST_REGISTER_ID IN (SELECT ESNTL_ID FROM COMVNUSERMASTER WHERE USER_NM LIKE '%'||#searchKeyword#||'%' )
|
||||||
|
</isEqual>
|
||||||
|
</isNotEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="searchConditionSite">
|
||||||
|
AND a.site_id = #searchConditionSite#
|
||||||
|
</isNotEmpty>
|
||||||
|
ORDER BY 1
|
||||||
|
<isNotEmpty property="searchSortCnd">
|
||||||
|
,$searchSortCnd$
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="searchSortOrd">
|
||||||
|
$searchSortOrd$
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEqual property="pageIndex" compareValue="0">
|
||||||
|
|
||||||
|
/*
|
||||||
|
LIMIT recordCountPerPage OFFSET firstIndex
|
||||||
|
*/
|
||||||
|
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
|
||||||
|
</isNotEqual>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- //설문지 양식 상세 L page -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_01" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_01 */
|
||||||
|
<![CDATA[
|
||||||
|
SELECT
|
||||||
|
A.QESTNR_ID AS qestnrId,
|
||||||
|
A.QUSTNR_SJ AS qustnrSj,
|
||||||
|
A.QUSTNR_PURPS AS qustnrPurps,
|
||||||
|
A.QUSTNR_WRITNG_GUIDANCE_CN AS qustnrWritngGuidanceCn,
|
||||||
|
/*
|
||||||
|
TO_DATE(A.QUSTNR_BGNDE,'YYYY-MM-DD') AS qustnrBgnde,
|
||||||
|
TO_DATE(A.QUSTNR_ENDDE,'YYYY-MM-DD') AS qustnrEndde,
|
||||||
|
*/
|
||||||
|
A.QUSTNR_BGNDE AS qustnrBgnde,
|
||||||
|
A.QUSTNR_ENDDE AS qustnrEndde,
|
||||||
|
A.QUSTNR_TRGET,
|
||||||
|
A.QUSTNR_TMPLAT_ID,
|
||||||
|
(SELECT QUSTNR_TMPLAT_TY FROM LETTNQUSTNRTMPLAT WHERE QUSTNR_TMPLAT_ID = A.QUSTNR_TMPLAT_ID) QUSTNR_TMPLAT_TY,
|
||||||
|
TO_CHAR(A.FRST_REGIST_PNTTM,'YYYY-MM-DD HH24') FRST_REGIST_PNTTM,
|
||||||
|
(SELECT USER_NM FROM LETTNEMPLYRINFO
|
||||||
|
WHERE ESNTL_ID = A.FRST_REGISTER_ID) FRST_REGISTER_ID,
|
||||||
|
TO_CHAR(A.LAST_UPDT_PNTTM,'YYYY-MM-DD HH24') LAST_UPDT_PNTTM,
|
||||||
|
A.LAST_UPDUSR_ID,
|
||||||
|
( SELECT COUNT(*) FROM LETTNQUSTNRQESITM WHERE QESTNR_ID = A.QESTNR_ID ) QUSTNRQESITM_CNT ,
|
||||||
|
( SELECT COUNT(*) FROM LETTNQUSTNRRSPNSRESULT WHERE QESTNR_ID = A.QESTNR_ID ) RRSPNSRESULT_CNT,
|
||||||
|
( SELECT COUNT(*) FROM LETTNQUSTNRRESPONDINFO WHERE QESTNR_ID = A.QESTNR_ID ) rrspnsResultCnt,
|
||||||
|
CASE
|
||||||
|
WHEN A.STTUS = '1' THEN
|
||||||
|
CASE
|
||||||
|
WHEN TO_DATE(A.QUSTNR_ENDDE,'YYYYMMDD') < TO_CHAR(SYSDATE, 'YYYYMMDD') THEN '2'
|
||||||
|
ELSE '1'
|
||||||
|
END
|
||||||
|
ELSE A.STTUS
|
||||||
|
END AS STTUS,
|
||||||
|
A.SITE_ID AS siteId,
|
||||||
|
A.SITE_ID_CD AS siteIdCd,
|
||||||
|
A.QUSTNR_VIEW_TRGET,
|
||||||
|
A.BEFORE_AND_AFTER,
|
||||||
|
A.ATCH_FILE_ID
|
||||||
|
FROM LETTNQESTNRINFO A
|
||||||
|
WHERE 1=1
|
||||||
|
AND QESTNR_ID = #qestnrId#
|
||||||
|
]]>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- //설문지 정보 조건에 맞는 R -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_02" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_02 */
|
||||||
|
|
||||||
|
SELECT A.QUSTNR_TMPLAT_ID AS qustnrTmplatId
|
||||||
|
/*
|
||||||
|
, A.QESTNR_ID AS qestnrId
|
||||||
|
*/
|
||||||
|
, COALESCE(B.QESTNR_ID,A.QESTNR_ID) AS qestnrId
|
||||||
|
, A.SITE_ID AS siteId
|
||||||
|
, A.site_id_cd AS siteIdCd
|
||||||
|
|
||||||
|
FROM LETTNQESTNRINFO A
|
||||||
|
|
||||||
|
LEFT OUTER JOIN (
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
a.QUSTNR_TMPLAT_ID ,
|
||||||
|
a.QESTNR_ID
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
b.QUSTNR_TMPLAT_ID ,
|
||||||
|
b.QESTNR_ID
|
||||||
|
FROM
|
||||||
|
lettnqustnrrespondinfo b
|
||||||
|
WHERE
|
||||||
|
b.edu_aplct_ord=#eduAplctOrd#
|
||||||
|
AND b.edu_chasi_ord=#eduChasiOrd#
|
||||||
|
GROUP BY
|
||||||
|
b.QUSTNR_TMPLAT_ID ,
|
||||||
|
b.QESTNR_ID
|
||||||
|
) b ,
|
||||||
|
LETTNQESTNRINFO a
|
||||||
|
WHERE
|
||||||
|
a.QUSTNR_TMPLAT_ID = b.QUSTNR_TMPLAT_ID
|
||||||
|
AND a.QESTNR_ID = b.QESTNR_ID
|
||||||
|
AND a.site_id = #siteId#
|
||||||
|
AND a.site_id_cd = #siteIdCd#
|
||||||
|
|
||||||
|
)b
|
||||||
|
on(1=1)
|
||||||
|
|
||||||
|
WHERE 1 =1
|
||||||
|
AND to_char(NOW(), 'YYYY.MM.DD') BETWEEN
|
||||||
|
COALESCE(a.qustnr_bgnde,'2000.01.01') AND COALESCE(a.qustnr_endde,'9999.12.31')
|
||||||
|
|
||||||
|
AND A.SITE_ID = #siteId#
|
||||||
|
AND COALESCE(A.site_id_cd, '10')=#siteIdCd#
|
||||||
|
|
||||||
|
ORDER BY A.QESTNR_ID DESC
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- //설문지 정보 조건에 맞는 R -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_02_bak" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_02_bak */
|
||||||
|
|
||||||
|
SELECT A.QUSTNR_TMPLAT_ID AS qustnrTmplatId
|
||||||
|
, A.QESTNR_ID AS qestnrId
|
||||||
|
, A.SITE_ID AS siteId
|
||||||
|
, A.site_id_cd AS siteIdCd
|
||||||
|
|
||||||
|
FROM LETTNQESTNRINFO A
|
||||||
|
WHERE 1 =1
|
||||||
|
AND to_char(sysdate, 'YYYY.MM.DD') BETWEEN
|
||||||
|
NVL(a.qustnr_bgnde,'2000.01.01') AND NVL(a.qustnr_endde,'9999.12.31')
|
||||||
|
|
||||||
|
AND A.SITE_ID = #siteId#
|
||||||
|
AND A.site_id_cd=#siteIdCd#
|
||||||
|
|
||||||
|
ORDER BY A.QESTNR_ID DESC
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- //관리자 청소년/성인 만족도 평가 R -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_03 */
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
b.QUSTNR_QESITM_ID AS qestnrQesitmId
|
||||||
|
, c.QUSTNR_RSLT_ID AS qustnrRsltId
|
||||||
|
|
||||||
|
, NVL(c.VERY_SATISFIED, cVERY_SATISFIED) AS verySatisfied
|
||||||
|
, NVL(c.SATISFIED, cSATISFIED) AS satisfied
|
||||||
|
, NVL(c.NEITHER, cNEITHER) AS neither
|
||||||
|
, NVL(c.DISSATISFIED, cDISSATISFIED) AS dissatisfied
|
||||||
|
, NVL(c.VERY_DISSATISFIED, cVERY_DISSATISFIED) AS veryDissatisfied
|
||||||
|
, c.ANSWER AS answer
|
||||||
|
, c.QUSTNR_IEM_ID AS qustnrIemId
|
||||||
|
|
||||||
|
|
||||||
|
, b.qestn_sn AS qestnSn
|
||||||
|
|
||||||
|
/*
|
||||||
|
, d.QESTNR_RESPONDENT_COUNT AS qestnrParticipant
|
||||||
|
, d.QESTNR_PARTICIPANT_COUNT AS qestnrRespondent
|
||||||
|
*/
|
||||||
|
, e.QESTNR_RESPONDENT_COUNT AS qestnrParticipant
|
||||||
|
, e.QESTNR_PARTICIPANT_COUNT AS qestnrRespondent
|
||||||
|
, d.QUSTNR_RESPOND_ID AS qestnrRespondId
|
||||||
|
|
||||||
|
|
||||||
|
FROM LETTNQESTNRINFO a
|
||||||
|
, LETTNQUSTNRQESITM b
|
||||||
|
LEFT OUTER join (
|
||||||
|
|
||||||
|
SELECT c02.*
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
c00.qustnr_tmplat_id
|
||||||
|
, c00.qestnr_id
|
||||||
|
, c00.qustnr_qesitm_id
|
||||||
|
, max(c00.qustnr_rslt_id) AS qustnr_rslt_id
|
||||||
|
FROM
|
||||||
|
LETTNQESTNRRSLTDetail c00
|
||||||
|
WHERE
|
||||||
|
c00.EDU_APLCT_ORD = #eduAplctOrd#
|
||||||
|
AND c00.EDU_CHASI_ORD = #eduChasiOrd#
|
||||||
|
GROUP BY
|
||||||
|
c00.qustnr_tmplat_id
|
||||||
|
, c00.qestnr_id
|
||||||
|
, c00.qustnr_qesitm_id
|
||||||
|
)c01
|
||||||
|
, LETTNQESTNRRSLTDetail c02
|
||||||
|
WHERE c01.qustnr_tmplat_id=c02.qustnr_tmplat_id
|
||||||
|
AND c01.qestnr_id=c02.qestnr_id
|
||||||
|
AND c01.qustnr_qesitm_id=c02.qustnr_qesitm_id
|
||||||
|
AND c01.qustnr_rslt_id=c02.qustnr_rslt_id
|
||||||
|
|
||||||
|
) c
|
||||||
|
on(
|
||||||
|
b.QUSTNR_TMPLAT_ID =c.QUSTNR_TMPLAT_ID
|
||||||
|
AND b.QESTNR_ID =c.QESTNR_ID
|
||||||
|
AND b.QUSTNR_QESITM_ID =c.QUSTNR_QESITM_ID
|
||||||
|
|
||||||
|
)
|
||||||
|
/*
|
||||||
|
LEFT OUTER JOIN LETTNQUSTNRRESPONDINFO d
|
||||||
|
ON ( c.QESTNR_ID = d.QESTNR_ID
|
||||||
|
AND c.EDU_APLCT_ORD = d.EDU_APLCT_ORD
|
||||||
|
AND c.EDU_CHASI_ORD = d.EDU_CHASI_ORD )
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 중복답변 처리 */
|
||||||
|
LEFT OUTER JOIN (
|
||||||
|
SELECT d0.QUSTNR_TMPLAT_ID
|
||||||
|
, d0.QESTNR_ID
|
||||||
|
, d0.EDU_APLCT_ORD
|
||||||
|
, d0.EDU_CHASI_ORD
|
||||||
|
, MAX(d0.QUSTNR_RESPOND_ID) AS QUSTNR_RESPOND_ID
|
||||||
|
FROM LETTNQUSTNRRESPONDINFO d0
|
||||||
|
GROUP BY d0.QUSTNR_TMPLAT_ID
|
||||||
|
, d0.QESTNR_ID
|
||||||
|
, d0.EDU_APLCT_ORD
|
||||||
|
, d0.EDU_CHASI_ORD
|
||||||
|
) d
|
||||||
|
ON (
|
||||||
|
c.QESTNR_ID = d.QESTNR_ID
|
||||||
|
AND c.EDU_APLCT_ORD = d.EDU_APLCT_ORD
|
||||||
|
AND c.EDU_CHASI_ORD = d.EDU_CHASI_ORD
|
||||||
|
)
|
||||||
|
|
||||||
|
LEFT OUTER JOIN LETTNQUSTNRRESPONDINFO e
|
||||||
|
on
|
||||||
|
(
|
||||||
|
d.QUSTNR_TMPLAT_ID =e.QUSTNR_TMPLAT_ID
|
||||||
|
AND d.QESTNR_ID =e.QESTNR_ID
|
||||||
|
AND d.QUSTNR_RESPOND_ID =e.QUSTNR_RESPOND_ID
|
||||||
|
AND d.EDU_APLCT_ORD = e.EDU_APLCT_ORD
|
||||||
|
AND d.EDU_CHASI_ORD = e.EDU_CHASI_ORD
|
||||||
|
)
|
||||||
|
|
||||||
|
LEFT OUTER JOIN (
|
||||||
|
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
c.QUSTNR_TMPLAT_ID
|
||||||
|
, c.QESTNR_ID
|
||||||
|
, c.QUSTNR_QESITM_ID
|
||||||
|
, c.EDU_APLCT_ORD
|
||||||
|
, c.EDU_CHASI_ORD
|
||||||
|
|
||||||
|
, sum(c.very_satisfied) AS cvery_satisfied
|
||||||
|
, sum(c.satisfied) AS csatisfied
|
||||||
|
, sum(c.neither) AS cneither
|
||||||
|
, sum(c.dissatisfied) AS cdissatisfied
|
||||||
|
, sum(c.very_dissatisfied) AS cvery_dissatisfied
|
||||||
|
|
||||||
|
FROM LETTNQESTNRRSLTEADetail c
|
||||||
|
GROUP BY
|
||||||
|
c.QUSTNR_TMPLAT_ID
|
||||||
|
, c.QESTNR_ID
|
||||||
|
, c.QUSTNR_QESITM_ID
|
||||||
|
, c.EDU_APLCT_ORD
|
||||||
|
, c.EDU_CHASI_ORD
|
||||||
|
|
||||||
|
|
||||||
|
)F
|
||||||
|
on(
|
||||||
|
b.QUSTNR_TMPLAT_ID =f.QUSTNR_TMPLAT_ID
|
||||||
|
AND b.QESTNR_ID =f.QESTNR_ID
|
||||||
|
AND b.QUSTNR_QESITM_ID =f.QUSTNR_QESITM_ID
|
||||||
|
|
||||||
|
AND f.EDU_APLCT_ORD = #eduAplctOrd#
|
||||||
|
AND f.EDU_CHASI_ORD = #eduChasiOrd#
|
||||||
|
)
|
||||||
|
|
||||||
|
WHERE a.site_id=#siteId#
|
||||||
|
AND a.SITE_ID_CD =#siteIdCd#
|
||||||
|
AND b.QUSTNR_TMPLAT_ID =a.QUSTNR_TMPLAT_ID
|
||||||
|
AND b.QESTNR_ID =a.QESTNR_ID
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- //관리자 청소년/성인 만족도 평가 R -->
|
||||||
|
<select id="VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04" parameterClass="VEAQestnrVO" resultClass="VEAQestnrVO">
|
||||||
|
/* VEALettnQestnrMIXDAO.selectDetail_MIX_LQI_04 */
|
||||||
|
|
||||||
|
SELECT a.qustnr_tmplat_id AS qustnrTmplatId
|
||||||
|
, a.qestnr_id AS qestnrId
|
||||||
|
, a.qustnr_nm AS qustnrNm
|
||||||
|
, a.qustnr_birth AS qustnrBirth
|
||||||
|
, count(*) AS rrspnsResultCnt
|
||||||
|
|
||||||
|
, ROUND(SUM(a.VERY_SATISFIED * 100
|
||||||
|
+ a.SATISFIED * 80
|
||||||
|
+ a.NEITHER * 60
|
||||||
|
+ a.dissatisfied * 40
|
||||||
|
+ a.very_dissatisfied * 20)
|
||||||
|
/
|
||||||
|
count(*),1) AS qustnrScore
|
||||||
|
|
||||||
|
FROM LETTNQESTNRRSLTEADetail a
|
||||||
|
WHERE 1=1
|
||||||
|
|
||||||
|
AND a.EDU_APLCT_ORD = #eduAplctOrd#
|
||||||
|
AND a.EDU_CHASI_ORD = #eduChasiOrd#
|
||||||
|
|
||||||
|
AND a.QESTNR_ID = #qestnrId#
|
||||||
|
AND a.QUSTNR_TMPLAT_ID = #qustnrTmplatId#
|
||||||
|
|
||||||
|
GROUP BY a.qustnr_tmplat_id
|
||||||
|
, a.qestnr_id
|
||||||
|
, a.qustnr_nm
|
||||||
|
, a.qustnr_birth
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</sqlMap>
|
||||||
@ -964,12 +964,16 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${list.qestRsltExists}">
|
||||||
|
<!-- 설문노출대상(승인처리를 받았음(20) && 교육기간이 지났음 list.qestRsltExists=true && 미이수가 아닌것(10) ) -->
|
||||||
|
|
||||||
<c:choose>
|
<c:choose>
|
||||||
|
|
||||||
<c:when test="${list.aplctStateCd eq 20 and list.qestnrId10Cnt gt 0}">
|
<c:when test="${list.aplctStateCd eq 20 and list.qestnrId10Cnt gt 0}">
|
||||||
<!-- 작성된 설문이 있다 -->
|
<!-- 작성된 설문이 있다 -->
|
||||||
<button type="button" class="btnType02" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
|
<button type="button" class="btn_type04" data-tooltip="sub37_pop20"
|
||||||
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','select'
|
onclick="fncInstrCostNewInfo('${list.eduAplctOrd}','${list.eduChasiOrd}','10','select'
|
||||||
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
|
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
|
||||||
)" title="팝업 열림">설문완료</button>
|
)" title="팝업 열림">설문완료</button>
|
||||||
</c:when>
|
</c:when>
|
||||||
@ -977,12 +981,24 @@
|
|||||||
<c:when test="${empty list.qestnrId10 and list.aprvlCd eq 20}">
|
<c:when test="${empty list.qestnrId10 and list.aprvlCd eq 20}">
|
||||||
<!-- 대상 설문이 없다 -->
|
<!-- 대상 설문이 없다 -->
|
||||||
대상설문없음
|
대상설문없음
|
||||||
|
</c:when>
|
||||||
|
|
||||||
|
<c:when test="${empty list.qestnrId10Cnt or list.qestnrId10Cnt eq 0}">
|
||||||
|
<!-- 작성된 설문이 없다 -->
|
||||||
|
등록된 설문없음
|
||||||
</c:when>
|
</c:when>
|
||||||
|
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
-
|
-
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
|
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<!-- 설문노출대상 아님 -->
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
|
||||||
<button type="button" class="btn_type04" onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert','${list.qustnrTmplatId}','${list.qestnrId10}','')"/>이수증</button>
|
<button type="button" class="btn_type04" onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert','${list.qustnrTmplatId}','${list.qestnrId10}','')"/>이수증</button>
|
||||||
|
|
||||||
@ -1069,7 +1085,230 @@
|
|||||||
|
|
||||||
<%-- <button type="button" class="btn_type03" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button> --%>
|
<%-- <button type="button" class="btn_type03" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button> --%>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 문항리스트_상세 -->
|
||||||
|
<div class="tb_tit01">
|
||||||
|
<p>교육 내용에 대한 전반적 만족도 평가</p>
|
||||||
|
</div>
|
||||||
|
<div class="tb_type01">
|
||||||
|
<table>
|
||||||
|
<c:if test="${!empty chasiSrvyList}">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 120px;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 120px;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
</colgroup>
|
||||||
|
<tbody class="ta_con">
|
||||||
|
<tr>
|
||||||
|
<th scope="row">
|
||||||
|
<p>참석자</p>
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" class="popupInput" id="qestnrParticipant" name="qestnrParticipant" value="<c:out value="${qestnrParticipant}"/>">
|
||||||
|
<c:out value="${qestnrParticipant}"/>
|
||||||
|
</td>
|
||||||
|
<th scope="row">
|
||||||
|
<p>응답율</p>
|
||||||
|
</th>
|
||||||
|
<td id="responseRate">-</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">
|
||||||
|
<p>응답자</p>
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" class="popupInput" id="qestnrRespondent" name="qestnrRespondent" value="<c:out value="${qestnrRespondent}"/>">
|
||||||
|
<c:out value="${qestnrRespondent}"/>
|
||||||
|
</td>
|
||||||
|
<th scope="row">
|
||||||
|
<p>무응답</p>
|
||||||
|
</th>
|
||||||
|
<td id="noResponse">-</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty chasiSrvyList}">
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">등록된 평가문항이 없습니다.</td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<c:if test="${!empty chasiSrvyList}">
|
||||||
|
<div class="tb_type01 list2">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">평가문항</th>
|
||||||
|
<th scope="col">매우만족</th>
|
||||||
|
<th scope="col">만족</th>
|
||||||
|
<th scope="col">보통</th>
|
||||||
|
<th scope="col">불만족</th>
|
||||||
|
<th scope="col">매우불만족</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach items="${Comtnqustnrqesitm}" var="QestmInfo" varStatus="status1">
|
||||||
|
<c:forEach items="${chasiSrvyList}" var="chasiSrvyInfo" varStatus="">
|
||||||
|
<c:if test="${QestmInfo.qestnrQesitmId eq chasiSrvyInfo.qestnrQesitmId}">
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="t_left">
|
||||||
|
${status1.count}) <c:out value="${QestmInfo.qestnCn}" escapeXml="true" />
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<c:out value="${chasiSrvyInfo.verySatisfied}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${chasiSrvyInfo.satisfied}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${chasiSrvyInfo.neither}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${chasiSrvyInfo.dissatisfied}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${chasiSrvyInfo.veryDissatisfied}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</c:forEach>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 기타의견이 있으면 보여준다. -->
|
||||||
|
<c:if test="${not empty subjInfo}">
|
||||||
|
<div class="tb_type01 list2">
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>기타의견</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="auto;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">기타의견</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">
|
||||||
|
<br/>
|
||||||
|
<c:out value="${fn:replace(subjInfo.qustnrCn , crlf , '<br/>')}" escapeXml="false" />
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
|
||||||
|
<!-- btn_wrap -->
|
||||||
|
<!--
|
||||||
|
<div class="btn_wrap btn_layout01">
|
||||||
|
<div class="btn_left">
|
||||||
|
<c:if test="${!empty chasiSrvyList}">
|
||||||
|
<button class="btn_type02" onclick="fncExcelDown(); return false;">엑셀 다운로드</button>
|
||||||
|
</c:if>
|
||||||
|
</div>
|
||||||
|
<div class="btn_center">
|
||||||
|
</div>
|
||||||
|
<div class="btn_right">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<c:choose>
|
||||||
|
<%-- <c:when test="${chasiSrvyList[0].neither ne '' and chasiSrvyList[0].neither ne null}"> --%>
|
||||||
|
<c:when test="${qestnrParticipant ne '' and qestnrParticipant ne null}">
|
||||||
|
|
||||||
|
<div class="btn_wrap">
|
||||||
|
<div class="btn_right">
|
||||||
|
|
||||||
|
<c:forEach var="list" items="${chasiQr}" varStatus="status">
|
||||||
|
|
||||||
|
<c:choose>
|
||||||
|
|
||||||
|
<c:when test="${not empty list.qestnrId10}">
|
||||||
|
|
||||||
|
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
|
||||||
|
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
|
||||||
|
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
|
||||||
|
)" title="팝업 열림">설문QR</button>
|
||||||
|
</c:when>
|
||||||
|
|
||||||
|
<c:otherwise>
|
||||||
|
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
|
||||||
|
</c:forEach>
|
||||||
|
|
||||||
|
<button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">수정</button>
|
||||||
|
<button type="button" class="btn_type01" onclick="fn_delete(); return false;">삭제</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<!-- 등록버튼 추가 필요 -->
|
||||||
|
<div class="btn_wrap">
|
||||||
|
<div class="btn_right">
|
||||||
|
|
||||||
|
<c:forEach var="list" items="${chasiQr}" varStatus="status">
|
||||||
|
|
||||||
|
<c:choose>
|
||||||
|
|
||||||
|
<c:when test="${not empty list.qestnrId10}">
|
||||||
|
|
||||||
|
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
|
||||||
|
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
|
||||||
|
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
|
||||||
|
)" title="팝업 열림">설문QR</button>
|
||||||
|
</c:when>
|
||||||
|
|
||||||
|
<c:otherwise>
|
||||||
|
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
|
||||||
|
</c:forEach>
|
||||||
|
|
||||||
|
<button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">등록</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user