2024-02-21 16:50 기소유예 수정 사항 작업

This commit is contained in:
myname 2024-02-21 16:50:52 +09:00
parent 987306b07f
commit 0203b4e833
16 changed files with 1579 additions and 137 deletions

View File

@ -212,6 +212,8 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
private String no3; //통계 데이터 구분 10-횟수, 20-인원
private String cnt; //통계 데이터 숫자
private String codeNm; //통계 데이터 코드명
public String getDesc1() {
return desc1;
@ -1067,5 +1069,17 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable {
public void setNo3(String no3) {
this.no3 = no3;
}
public String getCnt() {
return cnt;
}
public void setCnt(String cnt) {
this.cnt = cnt;
}
public String getCodeNm() {
return codeNm;
}
public void setCodeNm(String codeNm) {
this.codeNm = codeNm;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -213,6 +213,8 @@ public class VELctrDetailVO extends ComDefaultVO implements Serializable {
private String codeNm; //코드명
private String cnt; //통계 데이터 숫자
public String getPrcsOrd() {
return prcsOrd;
@ -1081,5 +1083,11 @@ public class VELctrDetailVO extends ComDefaultVO implements Serializable {
public void setCodeNm(String codeNm) {
this.codeNm = codeNm;
}
public String getCnt() {
return cnt;
}
public void setCnt(String cnt) {
this.cnt = cnt;
}
}

View File

@ -17,6 +17,9 @@ public interface CndtnTrgtMngService {
CndtnTrgtMngVO selectDetail4Merge(CndtnTrgtMngVO cndtnTrgtInfoVO);
//해당 지검의 관할청 코드값 가져오기
CndtnTrgtMngVO selectDetailReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoVO);
void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO);

View File

@ -110,6 +110,10 @@ public class CndtnTrgtMngDAO extends EgovAbstractDAO {
return (CndtnTrgtMngVO) select("cndtnTrgtInfoMngDAO.selectDetail4Merge", cndtnTrgtInfoVO);
}
public CndtnTrgtMngVO selectDetailReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoVO) {
return (CndtnTrgtMngVO) select("cndtnTrgtInfoMngDAO.selectDetailReqNmbr", cndtnTrgtInfoVO);
}
public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
update("cndtnTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO);
}

View File

@ -53,6 +53,11 @@ public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService {
return cndtnTrgtInfoMngDAO.selectDetail4Merge(cndtnTrgtInfoVO);
}
@Override
public CndtnTrgtMngVO selectDetailReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoVO) {
return cndtnTrgtInfoMngDAO.selectDetailReqNmbr(cndtnTrgtInfoVO);
}
@Override
public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
cndtnTrgtInfoMngDAO.update(cndtnTrgtInfoMngVO);

View File

@ -4,6 +4,7 @@ import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@ -564,13 +565,19 @@ public class CndtnTrgtMngController {
// CODE 값을 저장할 Set (중복을 제거하기 위해 사용)
Set<String> uniqueCodes = new HashSet<>();
HashSet<String> uniqueCodes = new HashSet<>();
for(CmmnDetailCode vo : CmmnDetailCodeList) {
uniqueCodes.add(vo.getCode().split("-")[0]);
}
model.addAttribute("CmmnDetailCodeList", uniqueCodes);
ArrayList<String> al = new ArrayList<>(uniqueCodes);
Collections.sort(al);
model.addAttribute("CmmnDetailCodeList", al);
//병합대상자 정보
@ -1099,13 +1106,17 @@ public class CndtnTrgtMngController {
// 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호
private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) {
//현재 선택한 검찰청의 지검 코드 가져오기
CndtnTrgtMngVO vcndtnTrgtInfoMngVO = cndtnTrgtInfoMngService.selectDetailReqNmbr(cndtnTrgtInfoMngVO);
//성인 미성년 구분
System.out.println("cndtnTrgtInfoMngVO.getDBirth()");
System.out.println(cndtnTrgtInfoMngVO.getDBirth());
String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth());
String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear();
String reqNmbrTemp = adultWhether+"-"+vcndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear();
int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
//int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%");
int cnt = cndtnTrgtInfoMngService.findCntreqNmber(reqNmbrTemp);
System.out.println(cnt);
System.out.println(cnt+1);
return reqNmbrTemp+"-"+(cnt+1);
@ -1822,7 +1833,7 @@ public class CndtnTrgtMngController {
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
paginationInfo.setRecordCountPerPage(100000);
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
@ -1992,7 +2003,7 @@ public class CndtnTrgtMngController {
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
paginationInfo.setRecordCountPerPage(100000);
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
@ -2098,6 +2109,161 @@ public class CndtnTrgtMngController {
return modelAndView;
}
//지청 담당자 excel 다운로드
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtExcel.do")
public ModelAndView trgtExcel(
@ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority());
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject(model);
return modelAndView;
}
//로그인 처리====================================
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = null;
try {
//현재사용자의 검찰청 코드를 검색조건에 넣는다.
String userWork = this.getUserWork(request);
cndtnTrgtInfoMngVO.setSearchCondition(userWork);
//1.pageing step1
PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
paginationInfo.setRecordCountPerPage(100000);
//2. pageing step2
cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo);
//검색 조회
String selectCondition = "";
if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){
String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus();
// selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')";
selectCondition = "AND a."+searchStatus+" LIKE '%" +cndtnTrgtInfoMngVO.getSearchKeyword() + "%'";
cndtnTrgtInfoMngVO.setSearchQuery(selectCondition);
}
if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus()))
{
cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus());
}
//
try {
cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
ComDefaultCodeVO vo = new ComDefaultCodeVO();
for(CndtnTrgtMngVO tmp : cndtnTrgtInfoMngVOList) {
//의뢰읠
tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10));
//사건번호
tmp.setVntYear(tmp.getVntYear()+"형제"+tmp.getVntNmbr());
//관할청
if(StringUtil.isNotEmpty(tmp.getCmptntAthrt())) {
vo.setCodeId("VEA008");
vo.setCode(tmp.getCmptntAthrt());
CmmnDetailCode cmmnDetailCode= egovCmmUseService.selectCmmCodeDetailValue(vo);
if (cmmnDetailCode!=null) tmp.setCmptntAthrt(StringUtil.escapeXml(cmmnDetailCode.getCodeNm()));
}
//생년월일
if(StringUtil.isNotEmpty(tmp.getdBirth())) {
tmp.setDBirth(tmp.getdBirth());
}
//성별
if(StringUtil.isNotEmpty(tmp.getSex())) {
vo.setCodeId("COM014");
vo.setCode(tmp.getSex());
CmmnDetailCode cmmnDetailCodeSex= egovCmmUseService.selectCmmCodeDetailValue(vo);
if (cmmnDetailCodeSex!=null) tmp.setSex((StringUtil.escapeXml(cmmnDetailCodeSex.getCodeNm())));
}
//의뢰상태
if(StringUtil.isNotEmpty(tmp.getReqStateCd())) {
if (tmp.getPrcsAplctPrdOrdCmplt()==null) {
vo.setCodeId("VEA005");
vo.setCode(tmp.getReqStateCd());
CmmnDetailCode cmmnDetailCodeReqState= egovCmmUseService.selectCmmCodeDetailValue(vo);
if (cmmnDetailCodeReqState!=null) tmp.setReqStateCd((StringUtil.escapeXml(cmmnDetailCodeReqState.getCodeNm())));
}else {
tmp.setReqStateCd("병합처리");
}
}
//교육상태
if(StringUtil.isNotEmpty(tmp.getEduStateCd())) {
vo.setCodeId("VEA002");
vo.setCode(tmp.getEduStateCd());
CmmnDetailCode cmmnDetailCodeEduState= egovCmmUseService.selectCmmCodeDetailValue(vo);
if (cmmnDetailCodeEduState!=null) tmp.setEduStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm())));
}
//주소
if(StringUtil.isNotEmpty(tmp.getAddr()) && StringUtil.isNotEmpty(tmp.getAddrDetail())) {
tmp.setAddr(tmp.getAddr()+" "+tmp.getAddrDetail());
}
}
}catch(Exception ex) {
ex.printStackTrace();
}
int[] width = {
4000, 5000, 5000, 5000, 3000
, 3000, 5000, 4000, 5000, 13000
, 3500
}; // 너비
String[] header = {
"의뢰일", "사건번호", "관할청", "생년월일", "성명"
, "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소"
, "검사명"
}; // 헤더에 들어갈 이름
String[] order = {
"ReqPnttm", "VntYear", "CmptntAthrt", "DBirth", "TrgtNm"
, "Sex", "ReqNmbr", "ReqStateCd", "EduStateCd", "Addr"
, "PrsctrNm"
}; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용)
excelDown(
cndtnTrgtInfoMngVOList,
"대상자 목록",
width,
header,
order,
model
);
modelAndView.addObject(model);
return modelAndView;
}
/**
* 특이사항 등록/수정 처리
*/

View File

@ -539,10 +539,10 @@ public class CndtnInstrMngController {
{
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_tngr_no1(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1);
//selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1);
model.addAttribute("list_no1",selectAsgnmInfoT2List_no1);
}

View File

@ -95,6 +95,7 @@
</select>
<select id="CmmUseDAO.selectCmmCodeDetailOrderByCode" parameterClass="ComDefaultCodeVO" resultMap="CmmCodeDetail">
/* CmmUseDAO.selectCmmCodeDetailOrderByCode */
<![CDATA[
SELECT
CODE_ID, CODE, CODE_NM, CODE_DC
@ -103,7 +104,10 @@
WHERE
USE_AT = 'Y'
AND CODE_ID = 'VEA008'
ORDER BY code
ORDER BY
SUBSTRING(code_nm, 1, 2) ,
instr(code_nm,'-') ,
code_nm
]]>
</select>

View File

@ -257,6 +257,42 @@
LIMIT 1
</select>
<!-- 해당 지검의 관할청 코드값 가져오기 -->
<select id="cndtnTrgtInfoMngDAO.selectDetailReqNmbr" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.selectDetailReqNmbr */
SELECT
decode(instr(a.code_nm,'지검'),0,b.code, a.code) AS cmptntAthrt
/*
,instr(a.code_nm,'지검')
,substring(a.code_nm,1,instr(a.code_nm,'-')-1)
,a.code_nm
,a.code
,b.*
*/
FROM
LETTCCMMNDETAILCODE a
LEFT OUTER JOIN LETTCCMMNDETAILCODE b
on(b.code_nm LIKE substring(a.code_nm,1,instr(a.code_nm,'-')-1)||'%')
WHERE
a.USE_AT = 'Y'
AND a.CODE_ID = 'VEA008'
AND a.code = #cmptntAthrt#
AND (
(
instr(a.code_nm,'지검')>0
AND a.code=b.code
)
OR
(
0>=instr(a.code_nm,'지검')
)
)
AND instr(b.code_nm,'지검')>0
LIMIT 1
</select>
<!-- 강사 수정 C -->
<update id="cndtnTrgtInfoMngDAO.update" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.update */
@ -337,6 +373,16 @@
</update>
<select id="cndtnTrgtInfoMngDAO.findCntreqNmber" resultClass="int" parameterClass="String">
SELECT
NVL(max(abs(replace(req_nmbr,#reqNmbrTemp#,''))),0)
FROM
vea_sspn_idmt_trgt
WHERE
req_nmbr LIKE #reqNmbrTemp#||'%' ;
</select>
<select id="cndtnTrgtInfoMngDAO.findCntreqNmber_bak" resultClass="int" parameterClass="String">
SELECT
count(*)
FROM
@ -345,6 +391,7 @@
req_nmbr LIKE #reqNmbrTemp# ;
</select>
<!-- 대상자 조회 후 대상자에 로그인 ID update -->
<update id="cndtnTrgtInfoMngDAO.updateUserId" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.updateSspnIdtmtTrgtOrd */

View File

@ -6,6 +6,7 @@
<typeAlias alias="VEInstrDetailVO" type="kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO"/>
<typeAlias alias="VELctrDetailVO" type="kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO"/>
<typeAlias alias="VELctrSttsVO" type="kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrSttsVO"/>
<typeAlias alias="VESttstVO" type="kcc.ve.instr.tngrVisitEdu.instrInfo.service.VESttstVO"/>
<!-- 교육실정통계 -①월별 횟수/교육인원(그래프 포함) -->
@ -1391,8 +1392,9 @@
<select id="VESttstMixDAO.selectEduPrfrmInfo_csi_no1" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_csi_no1 */
SELECT aaa.code, aaa.cnt
, bbb.code_nm
SELECT aaa.code AS code
, aaa.cnt AS cnt
, bbb.code_nm AS codeNm
FROM (
SELECT bb.code, sum(aa.cnt) AS cnt

View File

@ -56,8 +56,8 @@
<colgroup>
<col style="width: 40px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 80px">
<col style="width: 120px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 80px">
<col style="width: 60px">
@ -102,10 +102,10 @@
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${info.vntYear }" />형제<c:out value="${info.vntNmbr }" />
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
<ve:code codeId="VEA008" code="${list.cmptntAthrt}"/>
</td>
<td>
<c:out value="${list.dBirth }" />

View File

@ -234,7 +234,7 @@
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<th>횟수/인원</th>
<th>의뢰(명)</th>
<th>1월</th>
<th>2월</th>
@ -268,6 +268,8 @@
</c:choose>
</td>
-->
<td><c:out value="${list.codeNm}"/></td>
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
<td>
<c:choose>
<c:when test="${list.eduSlctCd eq title2}">
@ -278,9 +280,6 @@
</c:otherwise>
</c:choose>
</td>
<td><c:out value="${list.chasi}"/></td>
<td><fmt:formatNumber value="${list.mnt01}" pattern="#,###"/></td>
<td><fmt:formatNumber value="${list.mnt02}" pattern="#,###"/></td>
<td><fmt:formatNumber value="${list.mnt03}" pattern="#,###"/></td>
<td><fmt:formatNumber value="${list.mnt04}" pattern="#,###"/></td>
@ -309,57 +308,37 @@
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT = [];
//var dataNOP = [];
var month = [];
</script>
<c:forEach var="list" items="${list_no1}" varStatus="status">
<c:if test="${status.count eq '3'}">
<script type="text/javascript">
var dataNOT = ['${list.mnt01}', '${list.mnt02}', '${list.mnt03}', '${list.mnt04}', '${list.mnt05}', '${list.mnt06}', '${list.mnt07}', '${list.mnt08}', '${list.mnt09}', '${list.mnt10}', '${list.mnt11}', '${list.mnt12}'];
var maxNOT = Number(dataNOT[0]);
var dataNOTSum = 0;
for(var i = 0; i<12; i++){
var NOTs = Number(dataNOT[i]);
if(!isNaN(NOTs)){
if(NOTs > maxNOT){
maxNOT = NOTs
}
dataNOT.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
}
dataNOTSum += parseInt(dataNOT[i]);
}
maxNOT = Math.ceil(maxNOT / 10) * 10;
if(isNaN(dataNOTSum)){
dataNOTSum = 0;
}
month.push('${list.codeNm}');
</script>
</c:if>
<c:if test="${status.count eq '6'}">
<script type="text/javascript">
var dataNOP = ['${list.mnt01}', '${list.mnt02}', '${list.mnt03}', '${list.mnt04}', '${list.mnt05}', '${list.mnt06}', '${list.mnt07}', '${list.mnt08}', '${list.mnt09}', '${list.mnt10}', '${list.mnt11}', '${list.mnt12}'];
var dataNOPSum = 0;
var maxNOP = Number(dataNOP[0]);
for(var x = 0; x<12; x++){
var NOPs = Number(dataNOP[x]);
if(!isNaN(NOPs)){
if(NOPs > maxNOP){
maxNOP = NOPs
}
}
dataNOPSum += parseInt(dataNOP[x]);
}
maxNOP = Math.ceil(maxNOP / 100) * 100;
if(isNaN(dataNOPSum)){
dataNOPSum = 0;
}
</script>
</c:if>
</c:forEach>
<script type="text/javascript">
dataNOT.pop();
//dataNOP.pop();
month.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll = echarts.init(document.getElementById('chartAll'));
var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll = {
toolbox: {
feature: {
@ -370,58 +349,45 @@
}
},
legend: {
data: ['횟수', '인원']
data: ['']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month,
axisPointer: {
type: 'shadow'
}
},
axisLabel: {
rotate: 90,
}
}
],
yAxis: [
{
type: 'value',
name: '횟수',
name: '',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}회'
}
},
{
type: 'value',
name: '인원',
interval: 50,
/* max : maxNOP, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
formatter: '{value}명'
}
}
],
series: [
{
name: '횟수',
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '회';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT
},
{
name: '인원',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + '명';
@ -431,7 +397,7 @@
show: true,
position: 'top'
},
data: dataNOP
data: dataNOT
}
]
}

View File

@ -200,17 +200,17 @@
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 100px">
<col style="width: 130px">
<col style="width: 130px">
<col style="width: 90px">
<col style="width: 90px">
<col style="width: 60px">
<col style="width: 170px">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: auto">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
@ -239,10 +239,10 @@
<c:out value="${reqPnttm }" />
</td>
<td>
<c:out value="${list.vntNmbr }" />
<c:out value="${list.vntYear }" />형제<c:out value="${list.vntNmbr }" />
</td>
<td>
<c:out value="${list.cmptntAthrt }" />
<ve:code codeId="VEA008" code="${list.cmptntAthrt }"/>
</td>
<td>
<c:out value="${list.dBirth }" />
@ -265,7 +265,8 @@
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
${fullAddr}
<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%>
</td>
<td>
<c:out value="${list.prsctrNm }" />

View File

@ -435,7 +435,12 @@
}
function fncExcel(){
var listForm = document.listForm ;
// listForm.searchCondition.value = $("#searchCondition").val() ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/trgtExcel.do'/>";
listForm.submit();
}
@ -556,6 +561,16 @@
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>엑셀 다운로드</p>
</div>
<div class="util_right">
<button type="button" class="btn_type08" onclick="fncExcel();">엑셀 다운로드</button>
</div>
</div>
</div>
<div class="list_util">
@ -577,18 +592,18 @@
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 40px">
<col style="width: 100px">
<col style="width: 130px">
<col style="width: 130px">
<col style="width: 90px">
<col style="width: 90px">
<col style="width: 60px">
<col style="width: 170px">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: auto">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
@ -667,7 +682,8 @@
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}">
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
${fullAddr}
<%-- ${fn:length(fullAddr)> 50 ? fn:substring(fullAddr, 0, 50).concat('...') : ''} --%>
</td>
<td>
<c:out value="${list.prsctrNm }" />

View File

@ -329,6 +329,136 @@
})
}
}
// 대상자 의뢰취소 - 취소에 취소 (복구)
function fn_updateCancelReqStatus(p_eduStateCd, p_reqStateCd) {
var sspnIdtmtTrgtOrdList = [];
console.log('Start');
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrdValue = $(this).data('sspnidtmttrgtord');
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrdValue);
// 교육상태가 대기/ 연기 인지 확인
// 그 외에 값이면 loop 나온 뒤 경고 alert 실행 후 function 종료
if($(this).data('eduinfo') != 60
){
chk = true;
return;
}
});
if(chk){
alert("교육상태가 '교육취소'외에 다른 상태값이 있습니다.");
// 초기화
sspnIdtmtTrgtOrdList = [];
return;
}
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList" : sspnIdtmtTrgtOrdList,
"eduStateCd" : p_eduStateCd,
"reqStateCd" : p_reqStateCd
};
if(!confirm("의뢰취소복구를 하시겠습니까?")){
return;
}
this.fn_cmmAjax(dataToSend);
}
function fn_cmmAjax(dataToSend){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduStateCdAndReqStateCdAjax.do'/>";
// 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_updateReqStatus(p_eduStateCd, p_reqStateCd) {
var sspnIdtmtTrgtOrdList = [];
console.log('Start');
var chk = false;
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var sspnIdtmtTrgtOrdValue = $(this).data('sspnidtmttrgtord');
sspnIdtmtTrgtOrdList.push(sspnIdtmtTrgtOrdValue);
// 교육상태가 대기/ 연기 인지 확인
// 그 외에 값이면 loop 나온 뒤 경고 alert 실행 후 function 종료
if($(this).data('eduinfo') != 10
&& $(this).data('eduinfo') != 50
){
chk = true;
return;
}
});
if(chk){
alert("교육상태가 '교육대기','연기' 외에 다른 상태값이 있습니다.");
// 초기화
sspnIdtmtTrgtOrdList = [];
return;
}
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (sspnIdtmtTrgtOrdList.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"sspnIdtmtTrgtOrdList" : sspnIdtmtTrgtOrdList,
"eduStateCd" : p_eduStateCd,
"reqStateCd" : p_reqStateCd
};
if(!confirm("의뢰취소를 하시겠습니까?")){
return;
}
// AJAX 호출을 통해 서버에 데이터 전송
this.fn_cmmAjax(dataToSend);
}
</script>
<title>교육과정관리</title>
</head>
@ -496,18 +626,18 @@
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 1px;">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 2px">
<col style="width: 2px">
<col style="width: 40px">
<col style="width: 100px">
<col style="width: 130px">
<col style="width: 130px">
<col style="width: 90px">
<col style="width: 90px">
<col style="width: 60px">
<col style="width: 170px">
<col style="width: 80px">
<col style="width: 80px">
<col style="width: auto">
<col style="width: 80px">
</colgroup>
<thead>
<tr>
@ -543,7 +673,9 @@
<!-- </td> -->
<td onclick="event.cancelBubble=true">
<input name="chk" class="${list.atchFileId}" value="${list.clphone}"
data-userid="<c:out value='${list.userId}' />" data-sspnidtmttrgtord="<c:out value='${list.sspnIdtmtTrgtOrd}' />"
data-userid="<c:out value='${list.userId}' />"
data-eduInfo="${list.eduStateCd }"
data-sspnidtmttrgtord="<c:out value='${list.sspnIdtmtTrgtOrd}' />"
title="Check" type="checkbox"/>
</td>
<td><!-- 의뢰일 -->
@ -584,7 +716,8 @@
<c:set var="fullAddr" value="${list.addr} ${list.addrDetail}" />
<%-- <c:set var="fullAddr" value="${list.addr}" /> --%>
<td title="${fullAddr}"><!-- 주소 -->
${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''}
${fullAddr}
<%-- ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} --%>
</td>
<td><!-- 검사명 -->
<c:out value="${list.prsctrNm }" />
@ -619,6 +752,8 @@
<button type="button" class="btn_type06" onclick="openSmsPopup();">문자발송</button>
</div>
<div class="btn_right">
<button type="button" class="btn_type04" onclick="fn_updateCancelReqStatus(10, 10); return false;">의뢰취소복구</button>
<button type="button" class="btn_type05" onclick="fn_updateReqStatus(60, 40); return false;">의뢰취소</button>
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>