This commit is contained in:
subsub 2024-01-23 17:07:16 +09:00
commit 82ae7623c4
26 changed files with 277 additions and 29 deletions

View File

@ -63,7 +63,7 @@ public interface NotifyManageService {
void updateChkedUseYnN(NotifyManageVO notifyManageVO);
void insertNotifyForUser(NotifyManageVO notifyManageVO) throws FdlException;
}

View File

@ -364,6 +364,14 @@ public class NotifyManageServiceImpl extends EgovAbstractServiceImpl implements
}
// 관리자가 사용자에게 알림 등록
@Override
public void insertNotifyForUser(NotifyManageVO notifyManageVO) throws FdlException {
notifyManageVO.setCmmNotifyOrd(veaCmmNotifyOrdGnrService.getNextStringId());
notifyManageVO.setNotifyChk("N");
notifyManageDAO.insertNotifyInfo(notifyManageVO);
}
private String getCodeNm(String code, String codeId) {
ComDefaultCodeVO codeParam = new ComDefaultCodeVO();

View File

@ -5,6 +5,7 @@ import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
@ -23,6 +24,7 @@ import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
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.uss.olp.qrm.service.EgovQustnrRespondManageService;
@ -142,6 +144,9 @@ public class EduEndAdultController {
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
/*
// 교육신청 서비스단
@ -399,7 +404,12 @@ public class EduEndAdultController {
//로그인 처리====================================
// 확인 체크
if(StringUtils.isNotEmpty(vEEduAplctVO.getCmmNotifyOrd()))
{
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEEduAplctVO.getCmmNotifyOrd());
}
//기본데이터 불러오기
vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO);

View File

@ -206,6 +206,12 @@ public class FndtnEnhanceTrnController {
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
// 확인 체크
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getCmmNotifyOrd()))
{
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
}
//1.pageing step1
//5개만 select을 위한 설정

View File

@ -959,6 +959,12 @@ public class SspnIdtmtController {
}
//로그인 처리====================================
// 확인 체크
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getCmmNotifyOrd()))
{
notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEPrcsDetailVO.getCmmNotifyOrd());
}
//FAQ 조회
BoardVO boardVO = new BoardVO();
boardVO.setBbsId("BBSMSTR_000000000030"); //기소유예 FAQ bbsID

View File

@ -317,7 +317,7 @@ public class VeSendMail {
+ "<tbody>"
+ "<tr>"
+ "<td align=\"left\" bgcolor=\"#ffffff\" style=\"padding:30px 40px 40px;\">"
+ "<a href=\"https://oneid.copyright.or.kr/\" rel=\"noreferrer noopener\" target=\"_blank\" data-saferedirecturl=\"https://www.google.com/url?q=https://oneid.copyright.or.kr/&amp;source=gmail&amp;ust=1647666525851000&amp;usg=AOvVaw0ZroUFKmk2_yTWKT0iYs_q\"><img alt=\"한국저작권위원회-통합회원 로고\" src=\"http://copyright.or.kr/offedu/visitEdu/usr/publish/images/common/ci.png\" style=\"width:200px; border:0px currentColor;vertical-align:middle\"></a>"
+ "<a href=\"https://oneid.copyright.or.kr/\" rel=\"noreferrer noopener\" target=\"_blank\" data-saferedirecturl=\"https://www.google.com/url?q=https://oneid.copyright.or.kr/&amp;source=gmail&amp;ust=1647666525851000&amp;usg=AOvVaw0ZroUFKmk2_yTWKT0iYs_q\"><img alt=\"한국저작권위원회-통합회원 로고\" src=\"http://www.edu-copyright.or.kr/offedu/visitEdu/usr/publish/images/common/ci.png\" style=\"width:200px; border:0px currentColor;vertical-align:middle\"></a>"
+ "</td>"
+ "</tr>"
+ "<tr>"

View File

@ -210,7 +210,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String qestnrId30Cnt;
private String loginId;
private String prcsCnTwo; //과정내용
public String getEduPrcsOrd() {
return eduPrcsOrd;
@ -1028,6 +1028,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getPrcsCnTwo() {
return prcsCnTwo;
}
public void setPrcsCnTwo(String prcsCnTwo) {
this.prcsCnTwo = prcsCnTwo;
}
}

View File

@ -778,26 +778,24 @@ public class CndtnTrgtMngController {
//병합이면 대상을 찾아서 넣는다.
System.out.println("cndtnTrgtMngVO.getMergeStatus()");
System.out.println(cndtnTrgtMngVO.getMergeStatus());
//병합요청인지 확인
if (cndtnTrgtMngVO.getMergeStatus()!=null && !"".equals(cndtnTrgtMngVO.getMergeStatus())) {
//가능한 병합대상을 찾는다.
CndtnTrgtMngVO cndtnTrgtMergeVO = cndtnTrgtInfoMngService.selectDetail4Merge(cndtnTrgtMngVO);
if (cndtnTrgtMergeVO!=null && cndtnTrgtMergeVO.getTrgtNm().equals(cndtnTrgtMngVO.getTrgtNm())) {
//자기 자신으로 병합되지는 않는다.
if (cndtnTrgtMergeVO!=null && !cndtnTrgtMergeVO.getReqNmbr().equals(cndtnTrgtMngVO.getReqNmbr())) {
cndtnTrgtMngVO.setPrcsAplctPrdOrdCmplt(cndtnTrgtMergeVO.getSspnIdtmtTrgtOrd());
}
}
//excel 데이터를 넣거나, 업데이트 한다.
i+=cndtnTrgtInfoMngService.insert4Merge(cndtnTrgtMngVO);
}
/*
for (int i=0;i<trgtExcelVOList.size();i++) {
}
cndtnTrgtInfoMngService.bulkInsert(trgtExcelVOList);
*/
}
modelAndView.addObject("resultCnt", i);
} catch (Exception e) {
// TODO: handle exception
modelAndView.addObject("result", "fail");

View File

@ -16,6 +16,7 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.uss.umt.service.EgovUserManageService;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.ve.adv.tngr.stngInfo.service.VEAStngService;
@ -292,4 +293,26 @@ public class CommonManageWebController {
model.addAttribute("rndsList", rndsList);
return "oprtn/cmm/rndsPopList";
}
/**
* 관리자가 사용자에게 알림 전송
*/
@RequestMapping(value="/insertNotifyForUserAjax.do")
public ModelAndView insertNotifyForUserAjax(HttpServletRequest request , ModelMap model , NotifyManageVO notifyManageVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
notifyManageVO.setFrstRegisterId(loginVO.getUniqId());
try {
notifyManageService.insertNotifyForUser(notifyManageVO);
modelAndView.addObject("result", "success");
} catch (Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "fail");
}
return modelAndView;
}
}

View File

@ -1515,6 +1515,8 @@ public class MainController {
model.addAttribute("pageUri", pageUri);
String pageUriLast = pageUrl.substring(pageUrl.lastIndexOf("/"), pageUrl.length());
model.addAttribute("pageUriLast", pageUriLast);
String queryString = request.getQueryString();
model.addAttribute("queryString", queryString);
System.out.println("pageUri :: "+ pageUri);
System.out.println("pageUri :: "+ pageUri);

View File

@ -155,6 +155,7 @@
from VEA_CMM_NOTIFY
WHERE TO_USER_ID = #uniqId#
AND NOTIFY_CHK = 'N'
AND USE_YN = 'Y'
</select>

View File

@ -2540,6 +2540,7 @@
a.email AS email ,
a.hope_sbjct AS hopeSbjct,
a.phone AS phone,
a.frst_register_id AS frstRegisterId,
a.edu_md AS eduMd,
a.edu_md_cd AS eduMdCd,
b.edu_chasi_ord AS eduChasiOrd ,

View File

@ -590,6 +590,7 @@
,a.edu_strt_pnttm AS eduStrtPnttm
,a.edu_ddln_pnttm AS eduDdlnPnttm
,a.prcs_cn AS prcsCn
,b.prcs_cn AS prcsCnTwo
<!-- ,(SELECT lctr_plan_atch_file_id
FROM vea_prcs_aplct_prd_instr_asgnm
WHERE prcs_aplct_prd_ord = a.prcs_aplct_prd_ord

View File

@ -227,6 +227,17 @@
"S",
"N"
);
//강의만족도 제출 알림
insertNoty(
$(this).val().split('@')[0],
$(this).val().split('@')[1],
'[찾아가는 성인교육] 강의만족도 제출바랍니다.',
'/web/ve/aplct/adultVisitEdu/eduEnd/eduEndDetail.do',
$(this).data('frstregisterid'),
'20'
)
});
alert("발송되었습니다.");
@ -237,11 +248,54 @@
$.each(targetObj, function(){
$(this).val('');
});
}
}
function insertNoty(eduAplctOrd, eduChasiOrd, notifyCn, notifyPath, toUserId, lctrDivCd){
var notiForm = new FormData();
var notiFields = [
'eduAplctOrd',
'eduChasiOrd',
'notifyCn',
'notifyPath',
'toUserId',
'lctrDivCd'
]
notiFields.forEach(function(fieldName){
notiForm.append(fieldName, eval(fieldName));
});
$.ajax({
type:"POST",
url: "${pageContext.request.contextPath}/kccadr/oprtn/comm/insertNotifyForUserAjax.do",
data: notiForm,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>신청관리</title>
</head>
<body>
<form:form id="notiForm" name="notiForm" method="post" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" value=""/>
<input type="hidden" name="eduChasiOrd" value=""/>
<input type="hidden" name="notifyCn" value=""/>
<input type="hidden" name="notifyPath" value=""/>
<input type="hidden" name="toUserId" value=""/>
<input type="hidden" name="lctrDivCd" value=""/>
</form:form>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
@ -368,7 +422,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}' />"
data-eduaplctord="<c:out value='${list.eduAplctOrd}' />" title="Check" type="checkbox"/>
data-eduaplctord="<c:out value='${list.eduAplctOrd}' />" data-frstregisterid="<c:out value='${list.frstRegisterId}' />" 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"/>

View File

@ -56,6 +56,17 @@
if(returnData.result == "success"){
alert("저장 되었습니다.");
// location.reload();
//답변 알림
insertNoty(
$("#prcsAplctPrdQnaOrd").val(),
'',
'[기소유예] 문의 답변이 등록되었습니다.',
'/web/ve/aplct/sspnIdtmt/eduFAQList.do',
$("#frstRegisterId").val(),
'60'
)
fncGoList();
}
},
@ -64,6 +75,41 @@
}
});
}
function insertNoty(eduAplctOrd, eduChasiOrd, notifyCn, notifyPath, toUserId, lctrDivCd){
var notiForm = new FormData();
var notiFields = [
'eduAplctOrd',
'eduChasiOrd',
'notifyCn',
'notifyPath',
'toUserId',
'lctrDivCd'
]
notiFields.forEach(function(fieldName){
notiForm.append(fieldName, eval(fieldName));
});
$.ajax({
type:"POST",
url: "${pageContext.request.contextPath}/kccadr/oprtn/comm/insertNotifyForUserAjax.do",
data: notiForm,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
@ -72,6 +118,7 @@
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdQnaOrd" id="prcsAplctPrdQnaOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdQnaOrd}' />"/>
<input type="hidden" name="frstRegisterId" id="frstRegisterId" value="<c:out value='${info.frstRegisterId}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">

View File

@ -65,9 +65,9 @@
success:function(returnData){
console.log('returnData :: ', returnData);
if(returnData.result == "success"){
alert("등록되었습니다.");
alert(returnData.resultCnt+"등록되었습니다.");
// fncGoList();
$('#sspnIdtmtTrgtOrd').val(returnData.sspnIdtmtTrgtOrd);
//$('#sspnIdtmtTrgtOrd').val(returnData.sspnIdtmtTrgtOrd);
// 중복체크 ajax
// fn_duplChk();
}else if(returnData.result == "fail"){

View File

@ -280,7 +280,7 @@
sendEmail(
$(this).data('email'),
"교육운영 관리 시스템입니다.\n기반강화 교육이 확정되었습니다.",
"저작권배움터 담당자입니다.\n\n신청하신 실무자역량강화 교육 대상자로 확정되었습니다.\n시스템을 통하여 교육장소 및 교육기간 확인하시어 일정에 차질이 없도록 부탁드립니다.\n관련해서 궁금하신 사항은 아래 연락처 또는 교육문의를 통해 질의 부탁드립니다.\n\n감사합니다.",
$(this).val(),
$(this).data('userid'),
"A", // 기반강화

View File

@ -320,7 +320,7 @@
<tr>
<th scope="row">상세교육내용</th>
<td>
<c:out value="${fn:replace(info.prcsCn , crlf , '<br/>')}" escapeXml="false" />
<c:out value="${fn:replace(info.prcsCnTwo , crlf , '<br/>')}" escapeXml="false" />
</td>
</tr>
<tr>

View File

@ -269,7 +269,7 @@
<tr>
<th scope="row">상세교육내용</th>
<td>
<c:out value="${fn:replace(info.prcsCn , crlf , '<br/>')}" escapeXml="false" />
<c:out value="${fn:replace(info.prcsCnTwo , crlf , '<br/>')}" escapeXml="false" />
</td>
</tr>
<tr>

View File

@ -71,8 +71,8 @@
}
function fncPhotoPopup() {
var pop = document.createForm;
commonPopWindowopenForm("${pageContext.request.contextPath}/kccadr/oprtn/fndthEnhanceTrn/popup/fndthEduPhotoRegPopup.do", "750", "660", "fncPhotoPopup", $('#createForm'));
var pop = document.vEPrcsDetailVO;
commonPopWindowopenForm("${pageContext.request.contextPath}/kccadr/oprtn/fndthEnhanceTrn/popup/fndthEduPhotoRegPopup.do", "750", "660", "fncPhotoPopup", $('#vEPrcsDetailVO'));
}
</script>

View File

@ -55,6 +55,17 @@
success:function(returnData){
if(returnData.result == "success"){
alert("저장 되었습니다.");
//답변 알림
insertNoty(
$("#prcsAplctPrdQnaOrd").val(),
'',
'[실무역량강화] 문의 답변이 등록되었습니다.',
'/web/ve/aplct/fndtnEnhanceTrn/main.do',
$("#frstRegisterId").val(),
'50'
)
// location.reload();
fncGoList();
}
@ -64,6 +75,41 @@
}
});
}
function insertNoty(eduAplctOrd, eduChasiOrd, notifyCn, notifyPath, toUserId, lctrDivCd){
var notiForm = new FormData();
var notiFields = [
'eduAplctOrd',
'eduChasiOrd',
'notifyCn',
'notifyPath',
'toUserId',
'lctrDivCd'
]
notiFields.forEach(function(fieldName){
notiForm.append(fieldName, eval(fieldName));
});
$.ajax({
type:"POST",
url: "${pageContext.request.contextPath}/kccadr/oprtn/comm/insertNotifyForUserAjax.do",
data: notiForm,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
</head>
@ -72,6 +118,7 @@
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdQnaOrd" id="prcsAplctPrdQnaOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdQnaOrd}' />"/>
<input type="hidden" name="frstRegisterId" id="frstRegisterId" value="<c:out value='${info.frstRegisterId}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">

View File

@ -129,7 +129,7 @@ function fncPopClose(){
</tbody>
</table>
</div>
<div class="file_wrap">
<div class="file_wrap fileAfter file_list_div">
<table>
<colgroup>
<col style="width: auto;">

View File

@ -87,6 +87,9 @@ function snsShare(snsName) {
<c:if test="${resultListTit.depths eq '2' and fn:contains(resultListTit.url, pageUri)}" >
<!-- 조건을 만족하는 항목에 대한 처리 -->
<c:set var="upperMenuId" value="${resultListTit.upperMenuId }"/>
<c:if test="${pageUri eq '/web/cop/bbsWeb' and queryString eq 'bbsId=BBSMSTR_000000000653'}">
<c:set var="upperMenuId" value="9600000"/>
</c:if>
</c:if>
</c:forEach>
<!-- 1depths -->

View File

@ -255,7 +255,7 @@
<tr>
<th scope="row">상세교육내용</th>
<td colspan="3">
<c:out value="${fn:replace(info.prcsCn , crlf , '<br/>')}" escapeXml="false" />
<c:out value="${fn:replace(info.prcsCnTwo , crlf , '<br/>')}" escapeXml="false" />
<%-- <div style="white-space:pre;"><c:out value='${info.prcsCn}'/></div> --%>
</td>
</tr>

View File

@ -248,11 +248,14 @@ $(document).ready(function(){
<th scope=“row”>주민번호앞자리</th>
<td>
<div class="calendar_wrap">
<duet-date-picker identifier="date" id="dBirth" class="" id="" min="1940-01-01"></duet-date-picker>
<duet-date-picker identifier="date" id="dBirth" class="" min="1940-01-01"></duet-date-picker>
<script>
$('.calendar_wrap').each(function(){
$(this).find('.duet-date__input').attr('onkeydown','this.value=dateSetting(this.value);');
//$(this).find('.duet-date__input').attr('onkeydown','this.value=dateSettingHere(this.value);');
$(this).find('.duet-date__input').attr('onblur','this.value=dateSettingHere(this.value);');
});
var dBirth = document.querySelector("#dBirth");
var DATE_FORMAT = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/
@ -314,6 +317,37 @@ $(document).ready(function(){
dBirth.addEventListener("duetFocus", function (e) {
calendarSetting();
});
function dateSettingHere(objValue) {
var v = objValue.replace("..", ".");
if (v.match(/^\d{4}$/) !== null) {
if (event.keyCode == "8") {
// 백스페이스 키를 누를 때 '.' 안생기게
} else {
v = v + '.';
}
} else if (v.match(/^\d{4}\.\d{2}$/) !== null) {
if (event.keyCode == "8") {
// 백스페이스 키를 누를 때 '.' 안생기게
} else {
v = v + '.';
}
}
if (v.length==10){
$('#dBirth').val(v);
}else{
$('#dBirth').val('');
}
// '-' 막기
if (event.keyCode == "189" || event.keyCode == "109") {
event.preventDefault();
return v;
} else {}
return v;
}
</script>
</div>
<%-- <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script> --%>

View File

@ -206,6 +206,7 @@ $(window).on('load',function(){
function calendarSetting(){
$('.calendar_wrap').each(function(){
$(this).find('.duet-date__input').attr('onkeydown','this.value=dateSetting(this.value);');
$(this).find('.duet-date__input').attr('onblur','this.value=dateSettingHere(this.value);');
});
}