This commit is contained in:
myname 2024-01-05 18:20:36 +09:00
commit 9b8556a370
9 changed files with 231 additions and 17 deletions

View File

@ -1,6 +1,9 @@
package kcc.ve.aplct.comweb;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -21,6 +24,8 @@ import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.adv.tngr.stngInfo.service.VEACmpltCrtfcMixService;
import kcc.ve.adv.tngr.stngInfo.service.VEACmpltCrtfcVO;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
@ -140,6 +145,10 @@ public class CrownixAjaxController {
@Resource(name = "vEACmpltCrtfcMixService")
private VEACmpltCrtfcMixService vEACmpltCrtfcMixService;
//MIX
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//강사MIX 정보
@Resource(name="vEInstrMixService")
private VEInstrMixService vEInstrMixService;
@ -944,4 +953,66 @@ public class CrownixAjaxController {
return p_modelAndView;
}
/**
* 성인강사 결과보고 출력
*
*/
@RequestMapping("/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do")
public ModelAndView adultRsltRprtListAjax(
VEEduAplctVO vEEduAplctVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
System.out.println(" vEInstrDetailVO.getRsltlist().toString() :: "+vEEduAplctVO.getRsltList().toString());
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectAdultRsltRprtList(vEEduAplctVO);
//복호화
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
JSONArray jsReqInfo = new JSONArray(); //신청인 정보
for (int i=0;i<vEEduAplctVOList.size();i++) {
JSONObject jsDrtInfo = new JSONObject(); //전체 정보
//장소 처리 (온라인 - 매체 , 오프라인 - 장송)
String addr = "";
if("10".equals(vEEduAplctVOList.get(i).getEduSlctCd())) { //온라인 교육
if("99".equals(vEEduAplctVOList.get(i).getEduMdCd())) {
addr = vEEduAplctVOList.get(i).getEduMd();
}else {
addr = vEEduAplctVOList.get(i).getEduMdCd();
}
}else { //오프라인 교육
addr = vEEduAplctVOList.get(i).getAddr() + vEEduAplctVOList.get(i).getAddrDetail();
}
//출력일 처리
Date currentDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd", Locale.KOREA);
String formattedDate = dateFormat.format(currentDate);
jsDrtInfo.put("data_1", vEEduAplctVOList.get(i).getLctrSbjct());
jsDrtInfo.put("data_2", vEEduAplctVOList.get(i).getEduHopeDt());
jsDrtInfo.put("data_3", addr);
jsDrtInfo.put("data_4", vEEduAplctVOList.get(i).getEduTrgt());
jsDrtInfo.put("data_5", vEEduAplctVOList.get(i).getEduPrsnl());
jsDrtInfo.put("data_6", vEEduAplctVOList.get(i).getInstrNm());
jsDrtInfo.put("data_7", vEEduAplctVOList.get(i).getPrfsnFld());
jsDrtInfo.put("data_8", vEEduAplctVOList.get(i).getInsttNm());
jsDrtInfo.put("data_d", formattedDate);
//jsDrtInfo.put("image", "http://119.193.215.98:9989/offedu/uss/ion/pwm/getImage.do?atchFileId="+vEInstrDetailVOList.get(i).getPhtAtchFileId());
jsDrtInfo.put("image", "http://192.168.0.12:8086/offedu/uss/ion/pwm/getImage.do?atchFileId="+vEEduAplctVOList.get(i).getAtchFileId()+"&fileSn=0");
jsDrtInfo.put("image2", "http://192.168.0.12:8086/offedu/uss/ion/pwm/getImage.do?atchFileId="+vEEduAplctVOList.get(i).getAtchFileId()+"&fileSn=1");
jsReqInfo.add(jsDrtInfo);
}
modelAndView.addObject("rslts", jsReqInfo);
return modelAndView;
}
}

View File

@ -469,6 +469,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String instrEmail; //강사이메일
private String apptDiv; //강사구분
private List<String> rsltList; //결과보고 타겟ORD 목록
private String prfsnFld; //강사 전문분야
public String getSpecialWorkAllow() {
@ -2037,6 +2039,19 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
this.qustnrTmplatId = qustnrTmplatId;
}
public List<String> getRsltList() {
return rsltList;
}
public void setRsltList(List<String> rsltList) {
this.rsltList = rsltList;
}
public String getPrfsnFld() {
return prfsnFld;
}
public void setPrfsnFld(String prfsnFld) {
this.prfsnFld = prfsnFld;
}
}

View File

@ -103,4 +103,6 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectEduCmpltCrtfcNmbrList(VEEduAplctVO vEEduAplctVO) throws Exception;
List<VEEduAplctVO> selectCndtnList(VEEduAplctVO paramVO);
List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception;
}

View File

@ -254,5 +254,12 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
public List<VEEduAplctVO> selectCndtnList(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCndtnList", paramVO);
}
public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectAdultRsltRprtList", paramVO);
return tlist;
}
}

View File

@ -226,5 +226,10 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
@Override
public List<VEEduAplctVO> selectCndtnList(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectCndtnList(paramVO);
}
}
@Override
public List<VEEduAplctVO> selectAdultRsltRprtList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectAdultRsltRprtList(paramVO);
}
}

View File

@ -2610,7 +2610,7 @@
GROUP BY i.edu_aplct_ord , i.edu_chasi_ord
),0) AS rowNo
, e.rsdne as rsdne
, o.vea_rslt_rprt_ord AS veaRsltRprtOrd
FROM ve_edu_aplct a
, ve_edu_chasi b
@ -2660,7 +2660,9 @@
AND b.edu_chasi_ord=g.edu_chasi_ord
)
LEFT OUTER JOIN ve_edu_instr_dstnc h
ON b.edu_aplct_ord = h.edu_aplct_ord AND d.user_id = h.user_id
ON b.edu_aplct_ord = h.edu_aplct_ord AND d.user_id = h.user_id
LEFT OUTER JOIN vea_rslt_rprt o
ON b.edu_aplct_ord = o.edu_aplct_ord
WHERE 1=1
AND a.edu_aplct_ord=b.edu_aplct_ord
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
@ -7986,4 +7988,47 @@ VALUES
AND vad.EDU_CMPLT_CRTFC_NMBR LIKE TO_CHAR(SYSDATE, 'YYYY') || '%'; /* 현재연도로 시작하는지 확인 */
</select>
<!-- 성인 결과보고 리포트 L page -->
<select id="VEEduMIXDAO.selectAdultRsltRprtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectEduCmpltCrtfcNmbrList */
SELECT
a.edu_aplct_ord AS eduAplctOrd,
a.edu_slct_cd AS eduSlctCd,
a.edu_md_cd AS eduMdCd,
a.edu_md AS eduMd,
a.post AS post,
a.addr AS addr,
a.addr_detail AS addrDetail,
a.edu_trgt AS eduTrgt,
a.edu_prsnl AS eduPrsnl,
a.instt_nm AS insttNm,
b.edu_hope_dt AS eduHopeDt,
b.strt_tm AS strtTm,
b.end_tm AS endTm,
c.lctr_sbjct AS lctrSbjct,
c.atch_file_id AS atchFileId,
e.instr_nm AS instrNm,
e.blng AS blng,
e.prfsn_fld AS prfsnFld
FROM
VE_EDU_APLCT a
LEFT JOIN VE_EDU_CHASI b
ON
a.EDU_APLCT_ORD = b.EDU_APLCT_ORD
LEFT JOIN VEA_RSLT_RPRT c
ON
a.EDU_APLCT_ORD = c.EDU_APLCT_ORD
LEFT JOIN ve_edu_chasi_instr_asgnm d
ON
b.EDU_CHASI_ORD = d.EDU_CHASI_ORD
LEFT JOIN VE_INSTR_DETAIL e
ON
d.USER_ID = e.USER_ID
AND e.instr_div = '20'
AND e.use_yn = 'Y'
WHERE
a.LCTR_DIV_CD = '20'
<iterate open="(" close=")" conjunction="," property="rsltList" prepend="AND a.edu_aplct_ord IN" > #rsltList[]#</iterate>
</select>
</sqlMap>

View File

@ -314,6 +314,7 @@
<col style="width: auto">
<col style="width: 12%;">
<col style="width: 9%;">
<col style="width: 9%;">
</colgroup>
<thead>
<tr>
@ -324,6 +325,7 @@
<th>신청유형</th>
<th>기관(단체)명</th>
<th>강사이름</th>
<th>결과보고<br>제출여부</th>
<th>강의만족도<br>제출여부</th>
</tr>
</thead>
@ -341,7 +343,7 @@
<input name="chk" class="${list.userId}" value="${list.eduAplctOrd}@${list.eduChasiOrd}" data-phone="<c:out value='${list.clphone}' />" data-cnt="<c:out value='${list.cnt}' />"
data-date="<c:out value='${list.eduHopeDt}' /> <c:out value='${list.strtTm}' /> ~ <c:out value='${list.endTm}' />"
data-email="<c:out value='${list.email}' />" data-chrgnm="<c:out value='${list.chrgNm}' />" data-userId="<c:out value='${list.userId}' />"
title="Check" type="checkbox"/>
data-eduaplctord="<c:out value='${list.eduAplctOrd}' />" title="Check" type="checkbox"/>
</td>
<td onclick="fncGoDetail('${list.eduAplctOrd}','${list.eduChasiOrd}');" style="cursor:pointer">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyy.MM.dd"/>
@ -364,6 +366,9 @@
<td onclick="fncGoDetail('${list.eduAplctOrd}','${list.eduChasiOrd}');" style="cursor:pointer">
<c:out value="${list.instrNm}"/>
</td>
<td onclick="fncGoDetail('${list.eduAplctOrd}','${list.eduChasiOrd}');" style="cursor:pointer">
<c:if test="${empty list.veaRsltRprtOrd}">미제출</c:if><c:if test="${!empty list.veaRsltRprtOrd}">제출</c:if>
</td>
<td onclick="fncGoDetail('${list.eduAplctOrd}','${list.eduChasiOrd}');" style="cursor:pointer">
<c:if test="${list.qustnrRsltCnt le 0}">미제출</c:if><c:if test="${list.qustnrRsltCnt gt 0}">제출</c:if>
</td>
@ -390,6 +395,7 @@
<!-- <button type="button" class="btn_type04" onclick="fncSndSms();return false;">결과보고제출요청</button> -->
</div>
<div class="btn_right">
<button type="button" class="btn_type06" onclick="chkRprtPrint(); return false;">결과보고 출력 </button>
<button type="button" class="btn_type06" onclick="chkSendSmsEmail(); return false;">강의만족도 제출요청 </button>
<%-- <ve:select codeId="VE0016" name="pnltyCd" id="pnltyCd" css="class='sel_type1'" --%>
<%-- selectedValue="<c:out value='${info.eduSlctAreaCd}'/>" --%>
@ -404,5 +410,48 @@
</form:form>
<spring:eval expression="@property['Globals.prod.islocal']" var="isLocal"/>
<c:choose>
<c:when test="${isLocal eq 'real'}">
<script src="http://101.79.81.151/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://101.79.81.151/ReportingServer/html5/css/crownix-viewer.min.css">
</c:when>
<c:otherwise>
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
</c:otherwise>
</c:choose>
<script>
/*
* 오버레이 방식
*/
function chkRprtPrint(){
var isLocal = '${isLocal}';
var rsltList = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var eduAplctOrdValue = $(this).data('eduaplctord');
rsltList.push(eduAplctOrdValue);
});
if (rsltList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
if(isLocal == 'real'){ //운영
var viewer = new m2soft.crownix.Viewer('http://101.79.81.151/ReportingServer/service');
viewer.hideToolbarItem(["save"]);
viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://101.79.81.151/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']');
}else{ //개발
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service');
viewer.hideToolbarItem(["save"]);
viewer.openFile('adult_rslts_20240104.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/adultRsltRprtListAjax.do?rsltList='+rsltList+']');
}
}
</script>
</body>
</html>

View File

@ -381,7 +381,7 @@
viewer.showToolbarItem(["print_pdf"]);
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax_v2.do?userIdList='+userIdList+']');
viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.32:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax_v2.do?userIdList='+userIdList+']');
viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.12:8086/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax_v2.do?userIdList='+userIdList+']');
}
</script>

View File

@ -89,7 +89,7 @@
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
//listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtCmpltList.do'/>";
listForm.submit();
}
@ -177,6 +177,13 @@
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
</script>
<title>교육과정관리</title>
</head>
@ -218,15 +225,31 @@
<p>수료자 목록</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>구분1</p>
</div>
<div class="util_right">
<select name="searchStatus" id="searchStatus" class="sel_type1">
<option value="trgt_nm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'trgt_nm' }">selected="selected"</c:if>>이름</option>
<option value="d_birth" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'd_birth' }">selected="selected"</c:if>>생년월일</option>
<option value="frstRegistPnttm" <c:if test="${cndtnTrgtInfoMngVO.searchStatus == 'frstRegistPnttm' }">selected="selected"</c:if>>기간별</option>
</select>
<input type="text" id="trgtNm" name="trgtNm" placeholder="이름을 입력해주세요." title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.trgtNm}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>구분2</p>
</div>
<div class="util_right">
<input type="text" id="dBirth" name="dBirth" placeholder="생년월일을 입력해 주세요. 19800102" title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.dBirth}'/>">
</div>
</div>
<div class="list_top_3">
<div class="util_left">
<p>구분3</p>
</div>
<div class="util_right">
의뢰일:
<div id="calendar">
<div class="calendar_wrap">
<input type="text" class="calendar" placeholder="시작일" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${cndtnTrgtInfoMngVO.searchSmbtStartDt}">
@ -236,9 +259,6 @@
<input type="text" class="calendar" placeholder="종료일" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${cndtnTrgtInfoMngVO.searchSmbtEndDt}">
</div>
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="이름을 입력해주세요." title="검색어 입력" class="search_input" value="<c:out value='${cndtnTrgtInfoMngVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<!-- <button class="btn_type03" onclick="fncReset(this); return false;">초기화</button> -->
</div>
</div>
</div>
@ -334,7 +354,7 @@
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="3"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="11"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>