관리자 기소유예 대상자 등록시 중복대상자 처리기능 구현

This commit is contained in:
hylee 2024-01-08 16:42:00 +09:00
parent a7e91ed145
commit b999a0b7c1
9 changed files with 651 additions and 137 deletions

View File

@ -4,6 +4,7 @@ import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -544,9 +545,9 @@ public class EgovCryptoUtil {
// 240108 담당검사 이름 추가 // 240108 담당검사 이름 추가
public CndtnTrgtMngVO encryptCndtnTrgtMngVOInfo(CndtnTrgtMngVO p_cndtnTrgtInfoMngVO){ public CndtnTrgtMngVO encryptCndtnTrgtMngVOInfo(CndtnTrgtMngVO p_cndtnTrgtInfoMngVO){
if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm())); // if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (!"".equals(p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.encrypt(p_cndtnTrgtInfoMngVO.getClphone())); if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.encrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.encrypt(p_cndtnTrgtInfoMngVO.getClphone().trim()));
//if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.encrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); //if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.encrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm()));
return p_cndtnTrgtInfoMngVO; return p_cndtnTrgtInfoMngVO;
@ -556,9 +557,9 @@ public class EgovCryptoUtil {
// 240108 담당검사 이름 추가 // 240108 담당검사 이름 추가
public CndtnTrgtMngVO decryptCndtnTrgtMngVOInfo(CndtnTrgtMngVO p_cndtnTrgtInfoMngVO){ public CndtnTrgtMngVO decryptCndtnTrgtMngVOInfo(CndtnTrgtMngVO p_cndtnTrgtInfoMngVO){
if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm())); // if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (!"".equals(p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.decrypt(p_cndtnTrgtInfoMngVO.getClphone())); if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.decrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.decrypt(p_cndtnTrgtInfoMngVO.getClphone().trim()));
//if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.decrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); //if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.decrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm()));
return p_cndtnTrgtInfoMngVO; return p_cndtnTrgtInfoMngVO;

View File

@ -23,6 +23,8 @@ public interface CndtnTrgtMngService {
void updateDel(CndtnTrgtMngVO cndtnTrgtInfoMngVO); void updateDel(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> selectDuplChk(CndtnTrgtMngVO cndtnTrgtInfoMngVO);

View File

@ -110,7 +110,7 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
} }
public List<CndtnTrgtMngVO> checkSspnIdtmtStep1(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { public List<CndtnTrgtMngVO> checkSspnIdtmtStep1(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return (List<CndtnTrgtMngVO>) select("cndtnTrgtInfoMngDAO.checkSspnIdtmtStep1", cndtnTrgtInfoMngVO); return (List<CndtnTrgtMngVO>) list("cndtnTrgtInfoMngDAO.checkSspnIdtmtStep1", cndtnTrgtInfoMngVO);
} }
public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) {
@ -133,5 +133,9 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
update("cndtnTrgtInfoMngDAO.updateDel", cndtnTrgtInfoMngVO); update("cndtnTrgtInfoMngDAO.updateDel", cndtnTrgtInfoMngVO);
} }
public List<CndtnTrgtMngVO> selectDuplChk(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return (List<CndtnTrgtMngVO>) list("cndtnTrgtInfoMngDAO.selectDuplChk", cndtnTrgtInfoMngVO);
}
} }

View File

@ -69,4 +69,9 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
cndtnTrgtInfoMngDAO.updateDel(cndtnTrgtInfoMngVO); cndtnTrgtInfoMngDAO.updateDel(cndtnTrgtInfoMngVO);
} }
@Override
public List<CndtnTrgtMngVO> selectDuplChk(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
return cndtnTrgtInfoMngDAO.selectDuplChk(cndtnTrgtInfoMngVO);
}
} }

View File

@ -26,6 +26,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO; import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO; import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.CmmnDetailCode; import kcc.com.cmm.service.CmmnDetailCode;
import kcc.com.cmm.service.EgovCmmUseService; import kcc.com.cmm.service.EgovCmmUseService;
@ -38,6 +39,7 @@ import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil; import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -509,7 +511,9 @@ public class CndtnTrgtMngController {
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
try { try {
System.out.println(cndtnTrgtInfoMngVO.getDBirth()); if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) {
cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth());
}
System.out.println(cndtnTrgtInfoMngVO.getdBirth()); System.out.println(cndtnTrgtInfoMngVO.getdBirth());
cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO)); cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO));
@ -522,6 +526,8 @@ public class CndtnTrgtMngController {
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO); cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO); cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO);
// 병합을 하기위한 key
modelAndView.addObject("sspnIdtmtTrgtOrd", cndtnTrgtInfoMngVO.getSspnIdtmtTrgtOrd());
modelAndView.addObject("result", "success"); modelAndView.addObject("result", "success");
}catch(Exception ex) { }catch(Exception ex) {
@ -534,6 +540,116 @@ public class CndtnTrgtMngController {
} }
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/popup/duplChkPopup.do")
public String duplChkPopup(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) {
cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth());
}
try {
//검색을 위한 암호화
System.out.println("cndtnTrgtInfoMngVO.getTrgtNm() : "+ cndtnTrgtInfoMngVO.getTrgtNm());
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
System.out.println("cndtnTrgtInfoMngVO.getdBirth() : "+ cndtnTrgtInfoMngVO.getdBirth());
System.out.println("cndtnTrgtInfoMngVO.getTrgtNm() : "+ cndtnTrgtInfoMngVO.getTrgtNm());
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//병합대상자 검색
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO);
//복호화
cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCndtnTrgtMngVOList(cndtnTrgtInfoMngVOList);
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
model.addAttribute("list", cndtnTrgtInfoMngVOList);
return "/oprtn/cndtnSspnIdtmt/popup/duplChkPopup";
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/duplChkAjax.do")
public ModelAndView duplChkAjax(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
, final MultipartHttpServletRequest multiRequest
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
System.out.println(cndtnTrgtInfoMngVO.getTrgtNm());
System.out.println(cndtnTrgtInfoMngVO.getdBirth());
System.out.println(cndtnTrgtInfoMngVO.getSex());
try {
if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) {
cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth());
}
System.out.println(cndtnTrgtInfoMngVO.getdBirth());
//암호화
cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO);
List<CndtnTrgtMngVO> cndtnTrgtDuplListVO = cndtnTrgtInfoMngService.selectDuplChk(cndtnTrgtInfoMngVO);
modelAndView.addObject("cndtnTrgtDuplListVO", cndtnTrgtDuplListVO);
modelAndView.addObject("trgtDuplSize", cndtnTrgtDuplListVO.size());
modelAndView.addObject("result", "success");
}catch(Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "fail");
}
return modelAndView;
}
// 사건번호 // 사건번호
// 형식 : - 예시로 A-서울중앙-100-23-1 경우 // 형식 : - 예시로 A-서울중앙-100-23-1 경우
// A (성인/미성년 구분), 서울중앙, 100, 23, 1 // A (성인/미성년 구분), 서울중앙, 100, 23, 1

View File

@ -348,6 +348,19 @@
AND a.prcs_aplct_prd_ord_cmplt IS NULL /* 병합되지 않았다. */ AND a.prcs_aplct_prd_ord_cmplt IS NULL /* 병합되지 않았다. */
</select> </select>
<!-- 기소유예 대상자 확인 STEP01 -->
<select id="cndtnTrgtInfoMngDAO.selectDuplChk" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.checkSspnIdtmtStep1 - step1.신청 가능한 대상이 있는지 찾는다. */
SELECT
<include refid="CndtnTrgtInfoMngDAO.select_column_name"/>
FROM
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE
a.trgt_nm = #trgtNm#
AND a.d_birth = #dBirth#
AND a.sex = #sex#
</select>
</sqlMap> </sqlMap>

View File

@ -0,0 +1,301 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ 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"%>
<%
/**
* @Class Name : instrAsgnmPopup.jsp
* @Description : 강사배치 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 안주영
* @since 2022.1.8
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%-- <script type="text/javascript" src="<c:url value='/js/ve/tmapJS.js'/>"></script> --%>
<script type="text/javascript">
</script>
<title>강사배치 팝업</title>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
// ID를 alpreah_input로 가지는 곳에서 키를 누를 경우
$("#instrNm").keydown(function(key) {
if (key.keyCode == 13) {
linkPage(1);
return false;
}
});
});
function fncPopClose(){
self.close();
}
function fncGoSearch(pageNo){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/duplChkPopup.do'/>";
listForm.submit();
}
function fncInstrAsgnm(p_id) {
$("#userId").val(p_id);
var data1 = new FormData(document.getElementById("createForm"));
if(confirm("강사를 선택 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnInstrAsgnmAjax.do",
data: data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == 'success'){
alert("저장 되었습니다.");
opener.location.reload();
fncPopClose();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
// 체크박스O
function fnUpdate(){
var sspnIdtmtTrgtOrdList = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrd = $(this).val();
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrd);
});
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList": sspnIdtmtTrgtOrdList
//, "eduStateCd" : "20"
//, "prcsAplctPrdOrdCmplt" : $('#prcsAplctPrdOrdCmplt').val()
, "prcsAplctPrdOrdCmplt" : $('#sspnIdtmtTrgtOrd').val()
};
// var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do'/>";
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateTrgtDuplAjax.do'/>";
if(!confirm("병합처리 진행하시겠습니까?")){
return false;
}
// AJAX 호출을 통해 서버에 데이터 전송
$.ajax({
type:"POST",
url: url,
data: $.param(dataToSend, true), // 직렬화 , 컨트롤러에서 @ModelAttribute로 받을 수 있음
// contentType : 'application/json',
dataType:'json',
success:function(returnData){
if(returnData.result == "success"){
alert("변경 처리 되었습니다.");
window.location.reload();
}else{
alert("변경 중 오류가 발생하였습니다.");
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("AJAX Error:", textStatus, errorThrown);
console.error("Response:", jqXHR.responseText);
}
});
}
function fn_close(){
window.parent.location = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do'/>";
self.close();
}
</script>
</head>
<body>
<div class="area_popup supm_popup">
<div class="cont_popup">
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<input type="hidden" name="sspnIdtmtTrgtOrd" id="sspnIdtmtTrgtOrd" value="<c:out value="${cndtnTrgtInfoMngVO.sspnIdtmtTrgtOrd}" />" />
<div class="area_popup">
<div class="tb_tit01">
<p>병합 대상자 목록</p>
</div>
<div class="cont_popup">
<!-- list_top -->
<%-- <div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>병합 대상자 검색</p>
</div>
<div class="util_right">
<input type="text" id="trgtNm" name="trgtNm" placeholder="이름" value="<c:out value='${cndtnTrgtInfoMngVO.trgtNm }' /> " />
<button type="button" class="btn_type08" onclick="fncGoSearch(1); return false;">검색</button>
</div>
</div>
</div> --%>
<!-- <div class="pop_tb_tit01"> -->
<!-- <p>병합 대상자 목록</p> -->
<!-- </div> -->
<div class="pop_tb_type01">
<table>
<colgroup>
<col style="width: 40px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 80px">
<col style="width: 100px">
<col style="width: 80px">
<col style="width: 60px">
<col style="width: 140px">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: auto">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
<th></th>
<th>의뢰일</th>
<th>사건번호</th>
<th>관할청</th>
<th>생년월일</th>
<th>성명</th>
<th>성별</th>
<th>의뢰번호</th>
<th>의뢰상태</th>
<th>교육상태</th>
<th>주소</th>
<th>검사명</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr class="listCount" onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<tr>
<%-- <td onclick="fncGoDetail('<c:out value="${list.sspnIdtmtTrgtOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value='${list.prcsNm}'/> --%>
<!-- </td> -->
<td>
<c:choose>
<c:when test="${list.eduStateCd ne 20}">
<input name="chk"
value="${list.sspnIdtmtTrgtOrd}" title="Check" type="checkbox"/>
</c:when>
<c:otherwise>
<button type="button" class="btn_type05" onclick="fncDel('${list.sspnIdtmtTrgtOrd}'); return false;">취소</button>
</c:otherwise>
</c:choose>
</td>
<td>
<c:set var="reqPnttm" value="${fn:substring(list.reqPnttm, 0, 10)}" />
<%-- <fmt:formatDate value="${list.reqPnttm }" pattern="yyyy-MM-dd" /> --%>
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${info.vntYear }" />형제<c:out value="${info.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
</td>
<td>
<c:out value="${list.dBirth }" />
</td>
<td>
<c:out value="${list.trgtNm }" />
</td>
<td>
<ve:code codeId="COM014" code="${list.sex }"/>
</td>
<td>
<c:out value="${list.reqNmbr }" />
</td>
<td>
<ve:code codeId="VEA005" code="${list.reqStateCd }"/>
</td>
<td>
<ve:code codeId="VEA002" code="${list.eduStateCd }"/>
</td>
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
<c:out value="${list.addr }" />
<c:out value="${list.addrDetail }" />
<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%>
</td>
<td>
<c:out value="${list.prsctrNm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="12"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- page -->
<!-- <div class="page"> -->
<%-- <ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" /> --%>
<!-- </div> -->
<!-- //page -->
<div class="btn_wrap_pop btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type04" onclick="fnUpdate(); return false;">병합 처리</button>
<!-- <button type="button" class="btn_type04" onclick="self.close();">닫기</button> -->
<button type="button" class="btn_type04" onclick="fn_close()">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</form:form>
</div>
</div>
</body>
</html>

View File

@ -109,6 +109,19 @@
listForm.submit(); listForm.submit();
} }
function fn_excel_upload() {
var form = document.excelForm;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/duplChkPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/excelUploadPopup.do'/>";
window.open("#", "_duplChkPopup", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_duplChkPopup";
form.submit();
}
function fncDelete(prcsOrd){ function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ; document.listForm.prcsOrd.value = prcsOrd ;
@ -208,6 +221,8 @@
<title>교육과정관리</title> <title>교육과정관리</title>
</head> </head>
<body> <body>
<form id="excelForm" name="excelForm" method="post" >
</form>
<form id="detailForm" name="detailForm" method="post" > <form id="detailForm" name="detailForm" method="post" >
<input type="hidden" id="sspnIdtmtTrgtOrd" name="sspnIdtmtTrgtOrd" value="" /> <input type="hidden" id="sspnIdtmtTrgtOrd" name="sspnIdtmtTrgtOrd" value="" />
</form> </form>
@ -422,6 +437,7 @@
</div> </div>
<div class="btn_wrap btn_layout01"> <div class="btn_wrap btn_layout01">
<div class="btn_left"> <div class="btn_left">
<button type="button" class="btn_type04" onclick="fn_excel_upload(); return false;">엑셀 업로드</button>
</div> </div>
<div class="btn_center"> <div class="btn_center">
</div> </div>

View File

@ -73,7 +73,9 @@
if(returnData.result == "success"){ if(returnData.result == "success"){
alert("저장되었습니다."); alert("저장되었습니다.");
// fncGoList(); // fncGoList();
// $('#sspnIdtmtTrgtOrd').val(returnData.sspnIdtmtTrgtOrd);
// 중복체크 ajax
fn_duplChk();
}else if(returnData.result == "fail"){ }else if(returnData.result == "fail"){
alert(returnData.message); alert(returnData.message);
$('#cmptntAthrt').prop('disabled', true); $('#cmptntAthrt').prop('disabled', true);
@ -87,6 +89,57 @@
} }
} }
// 중복 대상자가 있는지 확인
function fn_duplChk(){
var data = new FormData(document.getElementById("createForm"));
// if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/duplChkAjax.do";
console.log(data);
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData :: ', returnData);
if(returnData.result == "success" && returnData.trgtDuplSize > 1){
alert("중복 대상자가 있습니다.");
fn_duplChkPopup();
fncGoList();
//
}else if(returnData.result == "fail"){
alert(returnData.message);
$('#cmptntAthrt').prop('disabled', true);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
$('#cmptntAthrt').prop('disabled', true);
}
});
// }
}
// 강사 배치
function fn_duplChkPopup() {
var form = document.createForm;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/duplChkPopup.do'/>";
window.open("#", "_duplChkPopup", "scrollbars = no, top=100px, left=100px, height=750px, width=1500px");
form.target = "_duplChkPopup";
form.submit();
}
function fn_valChk(){ function fn_valChk(){
@ -225,6 +278,9 @@
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post"> <form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form> </form:form>
<form:form id="createForm" name="createForm" commandName="adjustDeptManageVO" method="post"> <form:form id="createForm" name="createForm" commandName="adjustDeptManageVO" method="post">
<input type="hidden" name="sspnIdtmtTrgtOrd" id="sspnIdtmtTrgtOrd" value="" />
<!-- cont --> <!-- cont -->
<div class="cont_wrap"> <div class="cont_wrap">
<div class="box"> <div class="box">