2023-11-13 10:47 강사배정

This commit is contained in:
myname 2023-11-13 10:47:41 +09:00
parent 829e067d22
commit 1ce45ccfab
8 changed files with 439 additions and 4 deletions

View File

@ -572,6 +572,82 @@ public class CommonWebController {
return modelAndView; return modelAndView;
} }
//강사 대량 자동 배정
@RequestMapping(value="/instrMassAsgnm20231109Ajax.do")
public ModelAndView instrMassAsgnm20231109Ajax(
HttpServletRequest request
, ModelMap model
, VEEduAplctVO veEduAplctVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//기존에 강사 배정이 안된 차시에 대해서만 자동 배정 조건에 따라서 강사 배정을 한다.
//step0.소속 차시 정보 가져오기
//step1.온오프라인 여부 확인
//step2.대상 리스트 가져오기
//step3.없으면 저장하고, 있으면 skip
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//Step1.자동배정 차시 대상가져오기
List<VEEduAplctVO> vEEduAplctVOList = null;
{
String s_searchStartDt = request.getParameter("searchStartDt");
String s_searchEndDt = request.getParameter("searchEndDt");
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setInstrDiv("10"); //청소년
vEEduAplctVO.setLctrDivCd("10"); //청소년강의
vEEduAplctVO.setAprvlCd("60"); //확정코드
vEEduAplctVO.setSearchStartDt(s_searchStartDt);
vEEduAplctVO.setSearchEndDt(s_searchEndDt);
if(!"".equals(vEEduAplctVO.getSearchInstrNm())) {
vEEduAplctVO.setSearchInstrNm(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchInstrNm()));
}
vEEduAplctVO.setPageIndex(0);
//Step1.자동배정 차시 대상가져오기
vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO);
}
//step2.가능한 대상 강사 찾기
{
//step2-1.강사별 월별 시수이상을 받지 않은자 확인
//step2-2.해당 차시 학교의 거주 강사 검색
//step2-3.희망 지역 강사 검색
for (int i=0;i<vEEduAplctVOList.size();i++) {
//학교 지역, 희망일자가 필요
VEEduAplctVO tChasiInfo = vEEduAplctVOList.get(i);
String s_addr = tChasiInfo.getAddr(); //지역명
String s_eduHopeDt = tChasiInfo.getEduHopeDt(); //교육희망일자
}
}
//step3-1.해당 차시에 강사 배정이 있는지 확인
//step3-2.없으면 해당 차시에 강사 배정
//this.setInstrAsgnm(p_step01_list, vEInstrAsgnmVO, loginVO);
//modelAndView.addObject("rsCnt", rs);
modelAndView.addObject("result", "success");
return modelAndView;
}
//강사 대량 자동 배정 //강사 대량 자동 배정
@RequestMapping(value="/instrMassAsgnmEAAjax.do") @RequestMapping(value="/instrMassAsgnmEAAjax.do")
public ModelAndView instrMassAsgnmEAAjax( HttpServletRequest request , ModelMap model , VEEduAplctVO veEduAplctVO) throws Exception { public ModelAndView instrMassAsgnmEAAjax( HttpServletRequest request , ModelMap model , VEEduAplctVO veEduAplctVO) throws Exception {

View File

@ -29,6 +29,10 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectTngrRsltList(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectTngrRsltList(VEEduAplctVO paramVO) throws Exception;
//특정강사배정을 위한 대상 차시 리스트
List<VEEduAplctVO> selectTngrRsltSpcfcInstrList(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectTngrRsltPagingList4Excel(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectTngrRsltPagingList4Excel(VEEduAplctVO paramVO) throws Exception;

View File

@ -74,6 +74,13 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
return tlist; return tlist;
} }
public List<VEEduAplctVO> selectTngrRsltSpcfcInstrList(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTngrRsltSpcfcInstrList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) { public List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTngrFeePagingList", paramVO); List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectTngrFeePagingList", paramVO);

View File

@ -65,6 +65,12 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
return vEEduMIXDAO.selectTngrRsltList(paramVO); return vEEduMIXDAO.selectTngrRsltList(paramVO);
} }
@Override
public List<VEEduAplctVO> selectTngrRsltSpcfcInstrList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectTngrRsltSpcfcInstrList(paramVO);
}
@Override @Override
public List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) throws Exception{ public List<VEEduAplctVO> selectTngrFeePagingList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectTngrFeePagingList(paramVO); return vEEduMIXDAO.selectTngrFeePagingList(paramVO);

View File

@ -257,7 +257,7 @@ public class NewEduCnfrmMngTngrController {
vEEduAplctVO.setAprvlCd("60"); //확정코드 vEEduAplctVO.setAprvlCd("60"); //확정코드
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectTngrRsltList(vEEduAplctVO); List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectTngrRsltSpcfcInstrList(vEEduAplctVO);
VEEduAplctVO vo = new VEEduAplctVO(); VEEduAplctVO vo = new VEEduAplctVO();
for(int i=0; i < vEEduAplctVOList.size(); i++) { for(int i=0; i < vEEduAplctVOList.size(); i++) {
vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i));

View File

@ -2713,6 +2713,287 @@
</isNotEmpty> </isNotEmpty>
</select> </select>
<!-- 청소년 교육 결과 L page -->
<select id="VEEduMIXDAO.selectTngrRsltSpcfcInstrList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectTngrRsltSpcfcInstrList */
SELECT
AA.*,
2 ,
COUNT(1) OVER() AS totCnt
FROM (
SELECT
a.edu_aplct_ord AS eduAplctOrd ,
TO_CHAR(a.aprvl_pnttm,'YYYY-MM-DD') AS aprvlPnttm ,
a.edu_slct_cd AS eduSlctCd ,
a.edu_slct_area_cd AS eduSlctAreaCd ,
a.schol_instt_nm AS scholInsttNm ,
a.instt_div_cd AS insttDivCd ,
a.instt_nm AS insttNm ,
a.addr AS addr ,
a.strt_oprtn_dt AS strtOprtnDt ,
a.end_oprtn_dt AS endOprtnDt ,
a.chrg_nm AS chrgNm ,
a.schol_div_cd AS scholDivCd ,
a.stndrd_schol_cd AS stndrdScholCd ,
a.clphone AS clphone ,
a.email AS email ,
b.edu_chasi_ord AS eduChasiOrd ,
b.lrn_tm AS lrnTm ,
b.edu_hope_dt AS eduHopeDt ,
b.instr_cnfrm_cd AS instrCnfrmCd ,
b.strt_tm AS strtTm ,
b.end_tm AS endTm ,
b.trgt AS trgt ,
b.prsnl AS eduPrsnl ,
b.div_cd AS lctrDivCd ,
NVL(b.chasi, 0) AS chasi,
c.sbmt_yn AS sbmtYn ,
d.user_id AS userId ,
d.asgnm_aprvl_cd AS asgnmAprvlCd,
e.instr_nm AS instrNm,
g.atch_file_id AS atchFileId,
g.APRVL_CD AS acmdtAprvlCd,
d.rmrks AS rmrks,
c.atch_file_id AS rprtAtchFileId,
(select
count(1)
from
ve_edu_rslt_rprt
where 1=1
AND edu_aplct_ord = a.edu_aplct_ord
AND edu_chasi_ord = b.edu_chasi_ord
AND frst_register_id = d.user_id
AND sbmt_yn = 'Y') as cnt
<isEqual property="asgnmAprvlCd" compareValue="30">
,
f.sbmt_yn AS feeSbmtYn,
f.aprvl_cd AS feeAprvlCd,
NVL(TO_NUMBER(IF(f.instr_fee='',0,f.instr_fee)),0)
+ NVL(TO_NUMBER(IF(f.bsns_trip_fee='',0,f.bsns_trip_fee)),0)
+ NVL(TO_NUMBER(IF(f.spare_fee='',0,f.spare_fee)),0)
+ NVL(TO_NUMBER(IF(f.special_work_allow='',0,f.special_work_allow)),0)
+ NVL(TO_NUMBER(IF(f.distance_allow='',0,f.distance_allow)),0)
+ NVL(TO_NUMBER(IF(f.traffic_fee='',0,f.traffic_fee)),0)
- NVL(TO_NUMBER(IF(f.income_tax='',0,f.income_tax)),0)
- NVL(TO_NUMBER(IF(f.local_income_tax='',0,f.local_income_tax)),0)
AS totFee
</isEqual>
, (
SELECT COUNT(1)
FROM ve_new_noti e
WHERE (b.edu_aplct_ord = e.tbl_uniq_ord OR b.edu_chasi_ord = e.tbl_uniq_ord)
AND e.menu_no = #menuNo#
AND e.frst_register_id = #notiUserId#
)
AS notiCnt
, h.oneway_dstnc AS onewayDstnc
,NVL((
SELECT
COUNT(1)
FROM
ve_instr a
INNER JOIN ve_instr_detail e
ON (
a.user_id = e.user_id
AND e.use_yn = 'Y'
AND e.instr_div = '10'
)
INNER JOIN ve_edu_chasi_instr_asgnm_hstry i
ON(
/* 추가 강사 인원은 선정완료(20), 선정제외(30), 강의신청(50) 모두 나와야 한다. */
e.user_id = i.user_id
AND i.hstry_cd in ('20', '30', '50')
/*
AND i.hstry_cd in ('50')
*/
)
WHERE 1=1
AND e.instr_div ='10'
AND b.edu_aplct_ord = i.edu_aplct_ord
AND b.edu_chasi_ord = i.edu_chasi_ord
GROUP BY i.edu_aplct_ord , i.edu_chasi_ord
),0) AS rowNo
FROM ve_edu_aplct a
, ve_edu_chasi b
LEFT OUTER JOIN ve_edu_rslt_rprt c
ON( b.edu_aplct_ord=c.edu_aplct_ord
AND b.edu_chasi_ord=c.edu_chasi_ord)
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm d
ON( b.edu_aplct_ord=d.edu_aplct_ord
AND b.edu_chasi_ord=d.edu_chasi_ord)
<isNotEmpty property="searchTableJoin">
<isEqual property="searchTableJoin" compareValue="tngrResult">
INNER JOIN ve_instr_detail e
</isEqual>
</isNotEmpty>
<isEmpty property="searchTableJoin">
LEFT OUTER JOIN ve_instr_detail e
</isEmpty>
ON( d.user_id=e.user_id
AND e.instr_div=#instrDiv#
AND e.use_yn='Y'
)
<isEqual property="asgnmAprvlCd" compareValue="30">
LEFT OUTER JOIN ve_instr_fee f
ON( b.edu_aplct_ord = f.edu_aplct_ord
AND b.edu_chasi_ord = f.edu_chasi_ord
)
</isEqual>
/*
LEFT OUTER JOIN ve_acmdt_aplct g
*/
LEFT OUTER JOIN (
SELECT B00.*
FROM (
SELECT edu_aplct_ord, edu_chasi_ord, MAX(acmdt_aplct_ord) acmdt_aplct_ord
FROM ve_acmdt_aplct
GROUP BY edu_aplct_ord, edu_chasi_ord
)A00
, ve_acmdt_aplct B00
WHERE a00.edu_aplct_ord=b00.edu_aplct_ord
AND a00.edu_chasi_ord=b00.edu_chasi_ord
AND a00.acmdt_aplct_ord=b00.acmdt_aplct_ord
) g
ON ( b.edu_aplct_ord=g.edu_aplct_ord
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
WHERE 1=1
AND a.edu_aplct_ord=b.edu_aplct_ord
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
<isNotEmpty property="lctrDivCd">
AND a.LCTR_DIV_CD = #lctrDivCd#
</isNotEmpty>
<isNotEmpty property="aprvlCd">
AND a.aprvl_cd = #aprvlCd#
</isNotEmpty>
<isNotEmpty property="instrCnfrmCd">
AND b.instr_cnfrm_cd = #instrCnfrmCd#
</isNotEmpty>
<isNotEmpty property="searchInsttDivCd">
AND a.instt_div_cd = #searchInsttDivCd#
</isNotEmpty>
<isNotEmpty property="searchEduSlctCd">
AND a.edu_slct_cd = #searchEduSlctCd#
</isNotEmpty>
<isNotEmpty property="feeSbmtYn">
AND f.sbmt_yn = #feeSbmtYn#
</isNotEmpty>
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="searchAsgnmAprvlCd">
<isEqual property="searchAsgnmAprvlCd" compareValue="90">
AND d.asgnm_aprvl_cd is null
</isEqual>
<isNotEqual property="searchAsgnmAprvlCd" compareValue="90">
AND d.asgnm_aprvl_cd = #searchAsgnmAprvlCd#
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchStartDt">
AND b.EDU_HOPE_DT <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND b.EDU_HOPE_DT <![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
<isEmpty property="searchStartDt">
<isEmpty property="searchEndDt">
AND 1=1
</isEmpty>
</isEmpty>
) AA
WHERE 1=1
AND #eduAplctOrd# like '%'||AA.eduAplctOrd||'%'
AND #eduAplctOrd# like '%'||AA.eduChasiOrd||'%'
<isNotEmpty property="checkListQuery">
$checkListQuery$
</isNotEmpty>
<isEqual property="searchSubmitYn" compareValue="Y">
AND AA.CNT <![CDATA[ >= ]]> 1
</isEqual>
<isEqual property="searchSubmitYn" compareValue="N">
AND AA.CNT = 0
</isEqual>
<isNotEmpty property="searchScholDivCd">
AND AA.scholDivCd = #searchScholDivCd#
</isNotEmpty>
<isNotEmpty property="searchEduSlctAreaCd">
AND (
(
AA.eduSlctAreaCd = #searchEduSlctAreaCd#
AND AA.eduSlctCd = '20'
)
OR
(
'400' = #searchEduSlctAreaCd#
AND AA.eduSlctCd = '10'
)
)
</isNotEmpty>
<isNotEmpty property="searchScholNm">
AND AA.scholInsttNm LIKE '%' || #searchScholNm# || '%'
</isNotEmpty>
<isNotEmpty property="searchInsttNm">
AND AA.insttNm LIKE '%' || #searchInsttNm# || '%'
</isNotEmpty>
<isNotEmpty property="searchInstrNm">
AND AA.instrNm LIKE '%' || #searchInstrNm# || '%'
</isNotEmpty>
<isEmpty property="searchCondition">
<isNotEmpty property="searchKeyword">
AND (
A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# || '%' OR
A.INSTT_NM LIKE '%' || #searchKeyword# || '%'
)
</isNotEmpty>
</isEmpty>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="0">
AND (AA.scholInsttNm LIKE '%' || #searchKeyword# || '%' OR AA.instrNm LIKE '%' || #instrNm# || '%')
</isEqual>
<isEqual property="searchCondition" compareValue="1">
AND AA.scholInsttNm LIKE '%' || #searchKeyword# || '%'
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND AA.instrNm LIKE '%' || #instrNm# || '%'
</isEqual>
<isEqual property="searchCondition" compareValue="3">
AND (AA.insttNm LIKE '%' || #searchKeyword# || '%' OR AA.instrNm LIKE '%' || #searchKeyword# || '%')
</isEqual>
<isEqual property="searchCondition" compareValue="4">
AND AA.insttNm LIKE '%' || #searchKeyword# || '%'
</isEqual>
</isNotEmpty>
ORDER BY 1
<isEmpty property="orderByQuery">
, eduAplctOrd desc, eduChasiOrd
</isEmpty>
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
</select>
<!-- 강사료 확정 처리 목록 L page --> <!-- 강사료 확정 처리 목록 L page -->
<select id="VEEduMIXDAO.selectTngrFeePagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true"> <select id="VEEduMIXDAO.selectTngrFeePagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO" remapResults="true">
/* VEEduMIXDAO.selectTngrFeePagingList */ /* VEEduMIXDAO.selectTngrFeePagingList */

View File

@ -427,6 +427,67 @@
} }
}); });
} }
function fncInstrMassAsgnm20231109(){ //교육일자를 확인 해서 있는 경우만 처리한다.
var varEduHopeDtStrt = '';
var varEduHopeDtEnd = '';
var pageIndex = $('#listForm [name=pageIndex]').val();
//"searchStartDt"
varEduHopeDtStrt = $('#searchStartDt').val();
varEduHopeDtEnd = $('#searchEndDt').val();
//alert(varEduHopeDtStrt);
//alert(varEduHopeDtEnd);
//return ;
/*
var pageIndex = $('#listForm [name=pageIndex]').val();
$('input:checkbox[name="chk"]:checked').each(function() {
varEduAplctOrd = varEduAplctOrd + $(this).val() + "__";
});
*/
//alert(varEduAplctOrd);
if (varEduHopeDtStrt=='' || varEduHopeDtEnd==''){
alert("대상의 교육일자 기간은 반드시 선택해야 합니다.");
return ;
}
//private String strtOprtnDt; //시작운영일
//private String endOprtnDt; //마감운영일
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/comm/instrMassAsgnm20231109Ajax.do",
data: {
"searchStartDt" : varEduHopeDtStrt ,
"searchEndDt" : varEduHopeDtEnd ,
//"instrDiv" : "10" ,
},
dataType:'json',
success:function(returnData){
if(returnData.result=="success"){
alert("상태가 변경 되었습니다.");
linkPage(pageIndex);
}else{
alert("강사 자동 배정 중에 오류가 발생 되었습니다.");
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function fncInstrMassAsgnmEA(){ //개별 선택한 경우만 처리한다. function fncInstrMassAsgnmEA(){ //개별 선택한 경우만 처리한다.
@ -851,6 +912,7 @@
<div class="btn_wrap btn_layout01" style="width:100%;"> <div class="btn_wrap btn_layout01" style="width:100%;">
<div class="btn_right" style="width:100%;margin-bottom:40px;"> <div class="btn_right" style="width:100%;margin-bottom:40px;">
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnm(); return false;">강사배정(전체)X</button> <button type="button" class="btn_type06" onclick="fncInstrMassAsgnm(); return false;">강사배정(전체)X</button>
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnm20231109(); return false;">강사배정(전체)N-X</button>
<button type="button" class="btn_type06" onclick="fncInstrMassAsgnmEA(); return false;">강사배정(개별)X</button> <button type="button" class="btn_type06" onclick="fncInstrMassAsgnmEA(); return false;">강사배정(개별)X</button>
<button type="button" style="width:200px;" class="btn_type06" onclick="fncSpcfcInstrAsgnmInfo(); return false;">특정강사배정</button> <button type="button" style="width:200px;" class="btn_type06" onclick="fncSpcfcInstrAsgnmInfo(); return false;">특정강사배정</button>

View File

@ -1009,9 +1009,8 @@
//viewer.openFile('adult_instr_20231102.mrd', '/rfn [adult_instr_20231102.json]'); //viewer.openFile('adult_instr_20231102.mrd', '/rfn [adult_instr_20231102.json]');
//viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+('#p_instrId').val()+']'); //viewer.openFile('adult_instr_20231102.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetailAjax.do?p_instrId='+('#p_instrId').val()+']');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn="'+v_searchQlfctEndYn+'"&p_searcDivCd="'+v_searcDivCd+'"&p_searchKeyword="'+v_searchKeyword+'"]'); //viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn="'+v_searchQlfctEndYn+'"&p_searcDivCd="'+v_searcDivCd+'"&p_searchKeyword="'+v_searchKeyword+'"]');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn='+v_searchQlfctEndYn+'&p_searcDivCd='+v_searcDivCd+'&p_searchKeyword='+v_searchKeyword+']'); //viewer.openFile('instr_activity_20231108.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
//viewer.openFile('adult_instrs_20231107.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/adultVisitEdu/eduAplct/instrDetailListAjax.do?p_searchQlfctEndYn='+v_searchQlfctEndYn+'&p_searcDivCd='+v_searcDivCd+'&p_searchKeyword='+v_searchKeyword+']'); viewer.openFile('instr_activity_20231108.mrd', '/rf [http://192.168.0.59:3080/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
viewer.openFile('instr_activity_20231108.mrd', '/rf [http://119.193.215.98:9989/offedu/ve/aplct/tngrVisitEdu/eduAplct/instrActivityAjax.do?p_userId='+v_userId+']');
/* /*