2024-04-25 17:09 성인 설문 기타의견 추가

This commit is contained in:
myname 2024-04-25 17:09:40 +09:00
parent 5ba3a389c5
commit 9e883cc958
18 changed files with 442 additions and 6 deletions

View File

@ -170,6 +170,9 @@ public interface EgovQustnrRespondInfoService {
// 차수별 설문 조회 - 상세 답변 정보(기반, 기소 )
public List<QustnrRespondInfoVO> selectChasiSrvyFndtnList202312(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception;
// 차수별 설문 조회 - 주관식 답변 정보
public List<QustnrRespondInfoVO> selectSubjList(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception;
public List<QustnrRespondInfoVO> selectChasiSrvyExcelList(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception;

View File

@ -137,6 +137,10 @@ public class QustnrRespondInfoVO implements Serializable {
// 강화 기반은 라디오 버튼이라 변수 추가함
private String responseRadio = "";
//설문 주관식 입력을 받기위한 정보추가
private String qustnrCn = "";
private String userId = "";
public List<QustnrRespondInfoVO> getResultList() {
return resultList;
}
@ -646,6 +650,30 @@ public class QustnrRespondInfoVO implements Serializable {
public void setPrcsAplctPrdOrd(String prcsAplctPrdOrd) {
this.prcsAplctPrdOrd = prcsAplctPrdOrd;
}
public String getQustnrCn() {
return qustnrCn;
}
public void setQustnrCn(String qustnrCn) {
this.qustnrCn = qustnrCn;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@ -258,6 +258,11 @@ public class EgovQustnrRespondInfoServiceImpl extends EgovAbstractServiceImpl im
return dao.selectChasiSrvyFndtnList202312(qustnrRespondInfoVO);
}
@Override
public List<QustnrRespondInfoVO> selectSubjList(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception {
return dao.selectSubjList(qustnrRespondInfoVO);
}
@Override
public QustnrRespondInfoVO selectSiteIdQustnrTmplat(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception {
return dao.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);

View File

@ -212,6 +212,11 @@ public class QustnrRespondInfoDao extends EgovAbstractDAO {
return (List<QustnrRespondInfoVO>) list("QustnrRespondInfo.selectChasiSrvyFndtnList202312", qustnrRespondInfoVO);
}
@SuppressWarnings("unchecked")
public List<QustnrRespondInfoVO> selectSubjList(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception{
return (List<QustnrRespondInfoVO>) list("QustnrRespondInfo.selectSubjList", qustnrRespondInfoVO);
}
public QustnrRespondInfoVO selectSiteIdQustnrTmplat(QustnrRespondInfoVO qustnrRespondInfoVO) throws Exception{
return (QustnrRespondInfoVO) select("QustnrRespondInfo.selectSiteIdQustnrTmplat", qustnrRespondInfoVO);
}
@ -229,6 +234,8 @@ public class QustnrRespondInfoDao extends EgovAbstractDAO {
public void deleteChasiStatus(VEEduAplctVO vEEduAplctVO) {
delete("QustnrRespondInfo.deleteChasiStatusFormLettnqustnrrespondinfo", vEEduAplctVO);
delete("QustnrRespondInfo.deleteChasiStatusFormlettnqestnrrslt", vEEduAplctVO);
delete("QustnrRespondInfo.deleteVeaSulOpinion", vEEduAplctVO);
}
public List<QustnrRespondInfoVO> selectQustnrDetail(QustnrRespondInfoVO qustnrVO) {

View File

@ -53,6 +53,9 @@ public interface EgovQustnrRespondManageService {
*/
void insertQustnrRespondManage(QustnrRespondManageVO qustnrRespondManageVO) throws Exception;
void insertSubjRespond(QustnrRespondManageVO qustnrRespondManageVO) throws Exception;
/**
* 응답자정보를() 수정한다.
* @param qustnrRespondManageVO - 응답자정보 정보 담김 VO

View File

@ -77,6 +77,10 @@ public class QustnrRespondManageVO implements Serializable {
private String qestnrTmplatId = "";
private String respondNm;
private String qustnrCn;
private String userId;
/**
* qestnrId attribute 리턴한다.
@ -332,4 +336,20 @@ public class QustnrRespondManageVO implements Serializable {
public void setRespondNm(String respondNm) {
this.respondNm = respondNm;
}
public String getQustnrCn() {
return qustnrCn;
}
public void setQustnrCn(String qustnrCn) {
this.qustnrCn = qustnrCn;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@ -86,6 +86,11 @@ public class EgovQustnrRespondManageServiceImpl extends EgovAbstractServiceImpl
dao.insertQustnrRespondManage(qustnrRespondManageVO);
}
@Override
public void insertSubjRespond(QustnrRespondManageVO qustnrRespondManageVO) throws Exception {
dao.insertSubjRespond(qustnrRespondManageVO);
}
/**
* 응답자정보를() 수정한다.
* @param qustnrRespondManageVO - 응답자정보 조회할 정보가 담긴 VO

View File

@ -2,11 +2,11 @@ package kcc.let.uss.olp.qrm.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.com.cmm.ComDefaultVO;
import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO;
import org.springframework.stereotype.Repository;
/**
* 설문응답자관리 Dao Class 구현
* @author 공통서비스 장동한
@ -65,6 +65,10 @@ public class QustnrRespondManageDao extends EgovAbstractDAO {
public void insertQustnrRespondManage(QustnrRespondManageVO qustnrRespondManageVO) throws Exception{
insert("QustnrRespondManage.insertQustnrRespondManage", qustnrRespondManageVO);
}
public void insertSubjRespond(QustnrRespondManageVO qustnrRespondManageVO) throws Exception{
insert("QustnrRespondManage.insertSubjRespond", qustnrRespondManageVO);
}
/**
* 응답자정보를() 수정한다.

View File

@ -337,6 +337,18 @@ public class ScholInfoController {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
//주관식 답변 정보
try {
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");
}
//설문 참여 정보
/*
try {

View File

@ -710,6 +710,18 @@ public class EduEndTngrController {
qustnrRespondManageVO.setQestnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId());
egovQustnrRespondManageService.insertQustnrRespondManage(qustnrRespondManageVO);
//기타의견 저장
try {
qustnrRespondManageVO.setUserId(loginVO.getId());
qustnrRespondManageVO.setQustnrCn(qustnrRespondInfoVO.getQustnrCn());
egovQustnrRespondManageService.insertSubjRespond(qustnrRespondManageVO);
}catch(Exception ex) {
ex.printStackTrace();
}
// 설문 문항 결과 등록
for(int i=0; i < qustnrRespondInfoVO.getResultList().size(); i++) {
System.out.println("qustnrRespondInfoVO.getResultList().get(i).getQustnrQesitmId()");
@ -739,10 +751,12 @@ public class EduEndTngrController {
ex.printStackTrace();
}
}
modelAndView.addObject("result", "success");
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
modelAndView.addObject("result", "fail");
}
modelAndView.addObject("result", "success");
return modelAndView;
}

View File

@ -308,6 +308,21 @@ public class EduRsltMngAdultController {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
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("=============================================chasiSrvyList=============================================");
return "oprtn/tngrVisitEdu/popup/chasiStatusPopup";
@ -425,6 +440,22 @@ public class EduRsltMngAdultController {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
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=============================================");
//20220223 우영두 추가

View File

@ -558,6 +558,18 @@ public class EduRsltMngTngrController {
}
//기타의견 저장
try {
if (!"".equals(qustnrRespondInfoVO.getQustnrCn())) {
qustnrRespondManageVO.setUserId(loginVO.getId());
qustnrRespondManageVO.setQustnrCn(qustnrRespondInfoVO.getQustnrCn());
egovQustnrRespondManageService.insertSubjRespond(qustnrRespondManageVO);
}
}catch(Exception ex) {
ex.printStackTrace();
}
// 설문 문항별 결과 등록
for(int i=0; i < qustnrRespondInfoVO.getResultList().size(); i++) {
qustnrRespondInfoVO.getResultList().get(i).setQustnrTmplatId(qustnrRespondInfoVO.getQustnrTmplatId());

View File

@ -865,6 +865,40 @@
ORDER BY a.qestn_sn, A.QUSTNR_QESITM_ID
</select>
<select id="QustnrRespondInfo.selectSubjList" parameterClass="QustnrRespondInfoVO" resultClass="QustnrRespondInfoVO">
/* QustnrRespondInfo.selectSubjList 성인 설문 주관식 리스트 */
SELECT QUSTNR_TMPLAT_ID AS qustnrTmplatId,
QESTNR_ID AS qestnrId,
edu_aplct_ord AS eduAplctOrd,
edu_chasi_ord AS eduChasiOrd,
USER_ID AS userId,
QUSTNR_CN AS qustnrCn,
FRST_REGIST_PNTTM AS frstRegistPnttm ,
FRST_REGISTER_ID AS frstRegisterId,
LAST_UPDT_PNTTM AS lastUpdtPnttm,
LAST_UPDUSR_ID AS lastUpdusrId
FROM vea_sul_opinion
WHERE 1=1
<isNotEmpty property="qustnrTmplatId">
AND qustnr_tmplat_id=#qustnrTmplatId#
</isNotEmpty>
<isNotEmpty property="qestnrId">
AND qestnr_id=#qestnrId#
</isNotEmpty>
<isNotEmpty property="eduAplctOrd">
AND edu_aplct_ord=#eduAplctOrd#
</isNotEmpty>
<isNotEmpty property="eduChasiOrd">
AND edu_chasi_ord=#eduChasiOrd#
</isNotEmpty>
<isNotEmpty property="userId">
AND user_id=#userId#
</isNotEmpty>
ORDER BY qustnr_tmplat_id, qestnr_id
</select>
<select id="QustnrRespondInfo.selectChasiSrvyList_bak" parameterClass="QustnrRespondInfoVO" resultClass="QustnrRespondInfoVO">
/* QustnrRespondInfo.selectChasiSrvyList_bak */
@ -1014,6 +1048,14 @@
AND edu_chasi_ord = #eduChasiOrd#
</delete>
<delete id="QustnrRespondInfo.deleteVeaSulOpinion" parameterClass="vEEduAplctVO">
/* QustnrRespondInfo.deleteVeaSulOpinion */
DELETE FROM VEA_SUL_OPINION
WHERE 1=1
AND edu_aplct_ord = #eduAplctOrd#
AND edu_chasi_ord = #eduChasiOrd#
</delete>
<select id="QustnrRespondInfo.selectQustnr5060" parameterClass="VEPrcsDetailVO" resultClass="QustnrRespondInfoVO">
/* QustnrRespondInfo.selectQustnr5060 */
SELECT
@ -1041,7 +1083,7 @@
</select>
<delete id="QustnrRespondInfo.deleteStatusFormlettnqestnrrslt" parameterClass="QustnrRespondInfoVO">
/* QustnrRespondInfo.deleteChasiStatusFormlettnqestnrrslt */
/* QustnrRespondInfo.deleteStatusFormlettnqestnrrslt */
DELETE FROM lettnqestnrrsltDetail
WHERE 1=1
AND edu_aplct_ord = #eduAplctOrd#

View File

@ -134,4 +134,56 @@
)
]]>
</insert>
<!-- 응답자정보(설문조사)::기타의견입력 -->
<insert id="QustnrRespondManage.insertSubjRespond">
/* QustnrRespondManage.insertSubjRespond */
MERGE INTO VEA_SUL_OPINION
USING DUAL
ON(
QUSTNR_TMPLAT_ID=#qestnrTmplatId#
AND qestnr_Id=#qestnrId#
AND edu_aplct_ord=#eduAplctOrd#
AND edu_chasi_ord=#eduChasiOrd#
AND user_Id=#userId#
)
WHEN NOT MATCHED THEN
INSERT
(
QUSTNR_TMPLAT_ID
, QESTNR_ID
, EDU_APLCT_ORD
, EDU_CHASI_ORD
, USER_ID
, QUSTNR_CN
, FRST_REGIST_PNTTM
, FRST_REGISTER_ID
, LAST_UPDT_PNTTM
, LAST_UPDUSR_ID
)
VALUES(
#qestnrTmplatId#
, #qestnrId#
, #eduAplctOrd#
, #eduChasiOrd#
, #userId#
, #qustnrCn#
, SYSDATE
, #frstRegisterId#
, SYSDATE
, #lastUpdusrId#
)
WHEN MATCHED THEN
UPDATE
SET last_updusr_id = #lastUpdusrId#
, last_updt_pnttm = SYSDATE
, QUSTNR_CN = #qustnrCn#
</insert>
</sqlMap>

View File

@ -6023,7 +6023,8 @@
/*
TO_CHAR(B.edu_hope_dt,'YYYYMMDD') AS eduHopeDt
*/
B.edu_hope_dt AS eduHopeDt
A.LCTR_DIV_CD AS lctrDivCd
, B.edu_hope_dt AS eduHopeDt
, B.strt_tm AS strtTm
, B.end_tm AS endTm
, B.lrn_tm AS lrnTm

View File

@ -8,6 +8,11 @@
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%pageContext.setAttribute("crlf", "\r\n"); %>
<%pageContext.setAttribute("crlt", "&lt;"); %>
<%pageContext.setAttribute("crgt", "&gt;"); %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
/**
@ -862,6 +867,41 @@
</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">
@ -880,6 +920,9 @@
<br/>
<br/>
-->
<c:choose>
<%-- <c:when test="${chasiSrvyList[0].neither ne '' and chasiSrvyList[0].neither ne null}"> --%>

View File

@ -103,6 +103,12 @@
function srvySendSubmit(){
//기타의견은 1000자 까지만 가능
if ($('#qustnrCn').val().length>1000){
alert("기타의견은 1000자까지만 등록가능합니다.("+$('#qustnrCn').val().length+")");
return;
}
var qestmSize = parseInt($("#qestmInfoSize").val()); //평가문항 수량
var qestnrParticipant = parseInt($("#qestnrParticipant").val()); //참석자 수량
@ -369,6 +375,82 @@
</table>
</div>
<c:choose>
<c:when test="${qestnrParticipant eq '' or qestnrParticipant eq null}">
<!-- 응답이 없다. -->
<!-- 성인은 기타의견을 받는다. -->
<c:if test="${empty subjInfo}">
<div class="pop_tb_type04">
<table>
<caption>기타의견</caption>
<colgroup>
<col style="auto;">
</colgroup>
<thead>
<tr>
<th scope="col">기타의견</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<textarea name="qustnrCn" id="qustnrCn" title="기타의견" hint="a" style="width:100%;height:100%;"></textarea>
</th>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
</div>
</c:if>
</c:when>
<c:otherwise>
<!-- 응답이 있다. -->
<!-- 기타의견이 있으면 보여준다. -->
<c:if test="${not empty subjInfo}">
<div class="pop_tb_type04">
<table>
<caption>기타의견</caption>
<colgroup>
<col style="auto;">
</colgroup>
<thead>
<tr>
<th scope="col">기타의견</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<textarea name="qustnrCn" id="qustnrCn" title="기타의견" hint="a" style="width:100%;height:100%;">${subjInfo.qustnrCn}</textarea>
</th>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
</div>
</c:if>
</c:otherwise>
</c:choose>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left"></div>
<div class="btn_center">

View File

@ -23,6 +23,10 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%pageContext.setAttribute("crlf", "\r\n"); %>
<%pageContext.setAttribute("crlt", "&lt;"); %>
<%pageContext.setAttribute("crgt", "&gt;"); %>
<script type="text/javascript" src="${pageContext.request.contextPath}/kccadrPb/usr/script/popup.js"></script>
<script type="text/javaScript" language="javascript">
@ -109,6 +113,12 @@
}
function popupSrvySendSubmit(){
//기타의견은 1000자 까지만 가능
if ($('#qustnrCn').val().length>1000){
alert("기타의견은 1000자까지만 등록가능합니다.("+$('#qustnrCn').val().length+")");
return;
}
var qestmSize = parseInt($("#qestmInfoSize").val()); //평가문항 수량
var qestnrParticipant = parseInt($("#qestnrParticipant").val()); //참석자 수량
@ -432,12 +442,42 @@ $(document).ready(function(){
</table>
<br/>
<br/>
<br/>
<c:choose>
<c:when test="${setQustnrRsltId eq '' or setQustnrRsltId eq null}">
<!-- 응답이 없다. -->
<!-- 성인은 기타의견을 받는다. -->
<c:if test="${empty subjInfo and chasiInfo.lctrDivCd eq '20'}">
<table>
<caption>기타의견</caption>
<colgroup>
<col style="auto;">
</colgroup>
<thead>
<tr>
<th scope="col">기타의견</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<textarea name="qustnrCn" id="qustnrCn" title="기타의견" hint="a" style="width:95%;height:105%;"></textarea>
</th>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
</c:if>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
@ -454,6 +494,38 @@ $(document).ready(function(){
<c:otherwise>
<!-- 응답이 있다. -->
<!-- 기타의견이 있으면 보여준다. -->
<c:if test="${not empty subjInfo}">
<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/>
</c:if>
<script>
replyCalculation();
</script>