2024-02-21 16:50 기소유예 수정 사항 작업
This commit is contained in:
parent
987306b07f
commit
0203b4e833
@ -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
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -16,6 +16,9 @@ public interface CndtnTrgtMngService {
|
||||
CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO);
|
||||
|
||||
CndtnTrgtMngVO selectDetail4Merge(CndtnTrgtMngVO cndtnTrgtInfoVO);
|
||||
|
||||
//해당 지검의 관할청 코드값 가져오기
|
||||
CndtnTrgtMngVO selectDetailReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoVO);
|
||||
|
||||
void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 특이사항 등록/수정 처리
|
||||
*/
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -256,6 +256,42 @@
|
||||
ORDER BY req_pnttm
|
||||
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">
|
||||
@ -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 */
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 }" />
|
||||
|
||||
@ -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}">
|
||||
@ -277,10 +279,7 @@
|
||||
<c:out value="${list.eduSlctCd}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td><c:out value="${list.chasi}"/></td>
|
||||
|
||||
<td><fmt:formatNumber value="${list.mnt01}" pattern="#,###"/></td>
|
||||
</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
|
||||
}
|
||||
|
||||
}
|
||||
dataNOTSum += parseInt(dataNOT[i]);
|
||||
}
|
||||
maxNOT = Math.ceil(maxNOT / 10) * 10;
|
||||
if(isNaN(dataNOTSum)){
|
||||
dataNOTSum = 0;
|
||||
}
|
||||
dataNOT.push('${list.cnt}');
|
||||
//dataNOP.push('${list.cnt}');
|
||||
|
||||
month.push('${list.codeNm}');
|
||||
</script>
|
||||
</c:if>
|
||||
<c:if test="${status.count eq '6'}">
|
||||
</c:forEach>
|
||||
<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>
|
||||
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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -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 }" />
|
||||
|
||||
@ -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 }" />
|
||||
|
||||
@ -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,8 +673,10 @@
|
||||
<!-- </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}' />"
|
||||
title="Check" type="checkbox"/>
|
||||
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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user