diff --git a/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java b/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java index 91e9b33b..b17ff80d 100644 --- a/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java +++ b/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java @@ -34,6 +34,7 @@ import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrSttsVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; import kcc.ve.oprtn.qestnr.service.VEAQestnrVO; @@ -612,6 +613,39 @@ public class EgovCryptoUtil { return p_cndtnTrgtInfoMngVO; } + //CndtnTrgtMngVO - 암호화 + // 240108 담당검사 이름 추가 + public CmdTrgtMngVO encryptCmdTrgtMngVOInfo(CmdTrgtMngVO p_cndtnTrgtInfoMngVO){ +// if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.encrypt(p_cndtnTrgtInfoMngVO.getClphone().trim())); + + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getVntNmbr())) p_cndtnTrgtInfoMngVO.setVntNmbr(this.encrypt(p_cndtnTrgtInfoMngVO.getVntNmbr().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getdBirth())) p_cndtnTrgtInfoMngVO.setdBirth(this.encrypt(p_cndtnTrgtInfoMngVO.getdBirth().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddr())) p_cndtnTrgtInfoMngVO.setAddr(this.encrypt(p_cndtnTrgtInfoMngVO.getAddr().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddrDetail())) p_cndtnTrgtInfoMngVO.setAddrDetail(this.encrypt(p_cndtnTrgtInfoMngVO.getAddrDetail().trim())); + //if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.encrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); + + return p_cndtnTrgtInfoMngVO; + } + + //CndtnTrgtMngVO - 복호화 + // 240108 담당검사 이름 추가 + public CmdTrgtMngVO decryptCmdTrgtMngVOInfo(CmdTrgtMngVO p_cndtnTrgtInfoMngVO){ + +// if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.decrypt(p_cndtnTrgtInfoMngVO.getClphone().trim())); + + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getVntNmbr())) p_cndtnTrgtInfoMngVO.setVntNmbr(this.decrypt(p_cndtnTrgtInfoMngVO.getVntNmbr().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getdBirth())) p_cndtnTrgtInfoMngVO.setdBirth(this.decrypt(p_cndtnTrgtInfoMngVO.getdBirth().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddr())) p_cndtnTrgtInfoMngVO.setAddr(this.decrypt(p_cndtnTrgtInfoMngVO.getAddr().trim())); + if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddrDetail())) p_cndtnTrgtInfoMngVO.setAddrDetail(this.decrypt(p_cndtnTrgtInfoMngVO.getAddrDetail().trim())); + //if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.decrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm())); + + return p_cndtnTrgtInfoMngVO; + } + //CndtnTrgtMngVOList - 복호화 public List decryptCndtnTrgtMngVOList(List p_cndtnTrgtInfoMngVOList){ @@ -623,7 +657,16 @@ public class EgovCryptoUtil { return p_cndtnTrgtInfoMngVOList; } - + //CndtnTrgtMngVOList - 복호화 + public List decryptCmdTrgtMngVOList(List p_cndtnTrgtInfoMngVOList){ + + for (int i=0;i selectPagingList(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + void insert(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + int insert4Merge(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + CmdTrgtMngVO selectDetail(CmdTrgtMngVO cndtnTrgtInfoVO); + + CmdTrgtMngVO selectDetail4Merge(CmdTrgtMngVO cndtnTrgtInfoVO); + + CmdTrgtMngVO selectCheck4Merge(CmdTrgtMngVO cndtnTrgtInfoVO); + + //해당 지검의 관할청 코드값 가져오기 + CmdTrgtMngVO selectDetailReqNmbr(CmdTrgtMngVO cndtnTrgtInfoVO); + + void update(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + void updateUserId(CmdTrgtMngVO cndtnTrgtMngVO); + + void updateUserIdCancel(CmdTrgtMngVO cndtnTrgtMngVO); + + int findCntreqNmber(String reqNmbrTemp); + + void updateTrgtDuplAjax(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + void updateDel(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + List selectDuplChk(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + void bulkInsert(List trgtExcelVOList); + + //비공개메모 update + int memoUpdate(CmdTrgtMngVO cndtnTrgtInfoMngVO) throws Exception; + + void updateEduStateCdAndReqStateCdAjax(CmdTrgtMngVO cndtnTrgtMngVO); + + void deleteEduReqAjax(CmdTrgtMngVO cndtnTrgtMngVO); + + VEAStngVO selectSMSSndString(VEAStngVO vEAStngVO); + + void updateSMSSndString(VEAStngVO vEAStngVO); + + CmdTrgtMngVO findByEduAplctOrdAndMberId(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + List selectListRelated(CmdTrgtMngVO cndtnTrgtInfoMngVO); + + +/* //C + void insert(VEPrcsDetailVO paramVO) throws Exception; + + //R + VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception; + + //U + int update(VEPrcsDetailVO paramVO) throws Exception; + + //D + int delete(VEPrcsDetailVO paramVO) throws Exception; + + //L + List selectList(VEPrcsDetailVO paramVO) throws Exception; + + //List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception; + + List selectTngrPrcsList(VEPrcsDetailVO paramVO) throws Exception; + + //Page List + List selectPagingList(VEPrcsDetailVO paramVO) throws Exception; + + //교육과정 리스트 순서 수정 + void updatePrcsSort(VEPrcsDetailVO paramVO) throws Exception;*/ + +} diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/CmdTrgtMngVO.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/CmdTrgtMngVO.java new file mode 100644 index 00000000..7db6bcca --- /dev/null +++ b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/CmdTrgtMngVO.java @@ -0,0 +1,366 @@ +package kcc.ve.oprtn.cmdTrgt.trgtMng.service; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.List; + +import kcc.com.cmm.ComDefaultVO; + + +public class CmdTrgtMngVO extends ComDefaultVO implements Serializable { + /* + * 과정테이블 + * */ + + private static final long serialVersionUID = 1L; + + //ve_prcs + + private String cmdTrgtInfoOrd; // 과정순번 + private String userId; // 사용자아이디 + private String eduStateCd; // 대상상태코드 VEA002 + private String frstRegistPnttm; // 등록일시 + private String frstRegisterId; // 등록자 + private String lastUpdtPnttm; // 수정일시 + private String lastUpdusrId; // 수정자 + private String trgtNm; // 대상자성명 + private String clphone; // 연락처 + private String dBirth; // 생년월일 + private String DBirth; // 생년월일 + private String addr; // 주소 + private String addrDetail; // 상세주소 + private String email; // 이메일주소 + private String post; // 우편주소 + + private String reqPnttm; // 의뢰일 + private String vntYear; // 사건년도 + private String vntNmbr; // 사건번호 + private String cmptntAthrt; // 관할청 + private String sex; // 성별 + private String reqNmbr; // 의뢰번호 + private String reqNmbrTemp; // 의뢰번호 + private String prsctrNm; // 검사성명 + private String reqStateCd; // 의뢰상태코드 + private String prcsAplctPrdOrdCmplt;// 중복확인을 위한 신청강의 PK + private String atchFileId;// 첨부파일 ID + + + private List searchSelStatusList; + private List sspnIdtmtTrgtOrdList; + + private String eduAplctOrd; //신청한 교육 순번 + private String rmrks; //비고 + + private String resultCd; //결과값 T-참,F-거짓 + + private String regNmbr; //의뢰번호 + + private String mergeStatus; //excel 등록시 병합상태 null or 병합 + + private String cmptntAthrtNm; // 관할청이름 - 의뢰통지서 첨부파일에 사용 + + private String chkYn; // 기소유예 대상자 휴대폰 인증번호 체크 여부 + + private String title; + private String eduStrtPnttm; + private String aprvlCd; + private String aplctStateCd; + private String cnclCn; + + private String eduStateCdNm; // 대상상태명 + private String reqStateCdNm; // 신청상태명 + //private String cmptntAthrtNm; // 대상상태코드 VEA002 + private String sexNm; // 성별명 + + + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getEduStrtPnttm() { + return eduStrtPnttm; + } + public void setEduStrtPnttm(String eduStrtPnttm) { + this.eduStrtPnttm = eduStrtPnttm; + } + public String getAprvlCd() { + return aprvlCd; + } + public void setAprvlCd(String aprvlCd) { + this.aprvlCd = aprvlCd; + } + public String getAplctStateCd() { + return aplctStateCd; + } + public void setAplctStateCd(String aplctStateCd) { + this.aplctStateCd = aplctStateCd; + } + public String getCmdTrgtInfoOrd() { + return cmdTrgtInfoOrd; + } + public void setCmdTrgtInfoOrd(String cmdTrgtInfoOrd) { + this.cmdTrgtInfoOrd = cmdTrgtInfoOrd; + } + public String getUserId() { + return userId; + } + public void setUserId(String userId) { + this.userId = userId; + } + public String getEduStateCd() { + return eduStateCd; + } + public void setEduStateCd(String eduStateCd) { + this.eduStateCd = eduStateCd; + } + public String getFrstRegistPnttm() { + return frstRegistPnttm; + } + public void setFrstRegistPnttm(String frstRegistPnttm) { + this.frstRegistPnttm = frstRegistPnttm; + } + public String getFrstRegisterId() { + return frstRegisterId; + } + public void setFrstRegisterId(String frstRegisterId) { + this.frstRegisterId = frstRegisterId; + } + public String getLastUpdtPnttm() { + return lastUpdtPnttm; + } + public void setLastUpdtPnttm(String lastUpdtPnttm) { + this.lastUpdtPnttm = lastUpdtPnttm; + } + public String getLastUpdusrId() { + return lastUpdusrId; + } + public void setLastUpdusrId(String lastUpdusrId) { + this.lastUpdusrId = lastUpdusrId; + } + public String getTrgtNm() { + return trgtNm; + } + public void setTrgtNm(String trgtNm) { + this.trgtNm = trgtNm; + } + public String getClphone() { + return clphone; + } + public void setClphone(String clphone) { + this.clphone = clphone; + } + public String getdBirth() { + return dBirth; + } + public void setdBirth(String dBirth) { + this.dBirth = dBirth; + } + public String getAddr() { + return addr; + } + public void setAddr(String addr) { + this.addr = addr; + } + public String getAddrDetail() { + return addrDetail; + } + public void setAddrDetail(String addrDetail) { + this.addrDetail = addrDetail; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + public String getPost() { + return post; + } + public void setPost(String post) { + this.post = post; + } + public String getReqPnttm() { + return reqPnttm; + } + public void setReqPnttm(String reqPnttm) { + this.reqPnttm = reqPnttm; + } + public String getVntYear() { + return vntYear; + } + public void setVntYear(String vntYear) { + this.vntYear = vntYear; + } + public String getVntNmbr() { + return vntNmbr; + } + public void setVntNmbr(String vntNmbr) { + this.vntNmbr = vntNmbr; + } + public String getCmptntAthrt() { + return cmptntAthrt; + } + public void setCmptntAthrt(String cmptntAthrt) { + this.cmptntAthrt = cmptntAthrt; + } + public String getSex() { + return sex; + } + public void setSex(String sex) { + this.sex = sex; + } + public String getReqNmbr() { + return reqNmbr; + } + public void setReqNmbr(String reqNmbr) { + this.reqNmbr = reqNmbr; + } + public String getReqNmbrTemp() { + return reqNmbrTemp; + } + public void setReqNmbrTemp(String reqNmbrTemp) { + this.reqNmbrTemp = reqNmbrTemp; + } + public String getPrsctrNm() { + return prsctrNm; + } + public void setPrsctrNm(String prsctrNm) { + this.prsctrNm = prsctrNm; + } + public String getReqStateCd() { + return reqStateCd; + } + public void setReqStateCd(String reqStateCd) { + this.reqStateCd = reqStateCd; + } + public String getPrcsAplctPrdOrdCmplt() { + return prcsAplctPrdOrdCmplt; + } + public void setPrcsAplctPrdOrdCmplt(String prcsAplctPrdOrdCmplt) { + this.prcsAplctPrdOrdCmplt = prcsAplctPrdOrdCmplt; + } + public String getAtchFileId() { + return atchFileId; + } + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } + public List getSearchSelStatusList() { + return searchSelStatusList; + } + public void setSearchSelStatusList(List searchSelStatusList) { + this.searchSelStatusList = searchSelStatusList; + } + + public void setSearchSelStatusToList(String searchSelStatus) { + this.searchSelStatusList = Arrays.asList(searchSelStatus.split(",")); + } + public String getDBirth() { + return DBirth; + } + public void setDBirth(String dBirth) { + DBirth = dBirth; + } + public List getSspnIdtmtTrgtOrdList() { + return sspnIdtmtTrgtOrdList; + } + public void setSspnIdtmtTrgtOrdList(List sspnIdtmtTrgtOrdList) { + this.sspnIdtmtTrgtOrdList = sspnIdtmtTrgtOrdList; + } + public String getEduAplctOrd() { + return eduAplctOrd; + } + public void setEduAplctOrd(String eduAplctOrd) { + this.eduAplctOrd = eduAplctOrd; + } + public String getResultCd() { + return resultCd; + } + public void setResultCd(String resultCd) { + this.resultCd = resultCd; + } + public String getRegNmbr() { + return regNmbr; + } + public void setRegNmbr(String regNmbr) { + this.regNmbr = regNmbr; + } + public String getRmrks() { + return rmrks; + } + public void setRmrks(String rmrks) { + this.rmrks = rmrks; + } + + public String getMergeStatus() { + return mergeStatus; + } + public void setMergeStatus(String mergeStatus) { + this.mergeStatus = mergeStatus; + } + + + public String getChkYn() { + return chkYn; + } + public void setChkYn(String chkYn) { + this.chkYn = chkYn; + } + @Override + public String toString() { + return "\n CndtnTrgtMngVO => \n" + + " cmdTrgtInfoOrd=[" + cmdTrgtInfoOrd + "] // pk\n" + + " reqPnttm=[" + reqPnttm + "] // 요청 점수 시간\n" + + ", vntYear=[" + vntYear + "] // 사건 년도\n" + + ", vntNmbr=[" + vntNmbr + "] // 사건 번호\n" + + ", cmptntAthrt=[" + cmptntAthrt + "] // 관할 권한\n" + + ", dBirth=[" + dBirth + "] // 생년월일\n" + + ", trgtNm=[" + trgtNm + "] // 대상자 이름\n" + + ", sex=[" + sex + "] // 성별\n" + + ", addr=[" + addr + "] // 주소\n" + + ", post=[" + post + "] // 우편번호\n" + + ", clphone=[" + clphone + "] // 핸드폰 번호\n" + + ", reqNmbr=[" + reqNmbr + "] // 요청 번호\n" + + ", prsctrNm=[" + prsctrNm + "] // 담당 검사 이름\n" + + ", reqStateCd=[" + reqStateCd + "] // 요청 상태 코드\n" + + ", eduStateCd=[" + eduStateCd + "] // 교육 상태 코드\n" + + ", prcsAplctPrdOrdCmplt=[" + prcsAplctPrdOrdCmplt + "] // 병합인 경우 상위 병합자의 기소유예대상자순번\n" + + ", mergeStatus=[" + mergeStatus + "] // 병합 상태(Excel)\n" + + ", rmrks=[" + rmrks + "] // 비고\n" + + ", chkYn=[" + chkYn + "] // 인증여부\n" + ; + } + public String getCmptntAthrtNm() { + return cmptntAthrtNm; + } + public void setCmptntAthrtNm(String cmptntAthrtNm) { + this.cmptntAthrtNm = cmptntAthrtNm; + } + public String getCnclCn() { + return cnclCn; + } + public void setCnclCn(String cnclCn) { + this.cnclCn = cnclCn; + } + public String getEduStateCdNm() { + return eduStateCdNm; + } + public void setEduStateCdNm(String eduStateCdNm) { + this.eduStateCdNm = eduStateCdNm; + } + public String getReqStateCdNm() { + return reqStateCdNm; + } + public void setReqStateCdNm(String reqStateCdNm) { + this.reqStateCdNm = reqStateCdNm; + } + public String getSexNm() { + return sexNm; + } + public void setSexNm(String sexNm) { + this.sexNm = sexNm; + } + +} diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngDAO.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngDAO.java new file mode 100644 index 00000000..3333681b --- /dev/null +++ b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngDAO.java @@ -0,0 +1,205 @@ +package kcc.ve.oprtn.cmdTrgt.trgtMng.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; + +@Repository("cmdTrgtInfoMngDAO") +public class CmdTrgtMngDAO extends EgovAbstractDAO { + +/* *//** + * 등록 - C + * @param VELctrDetailVO + * @throws Exception + *//* + public void insert(VEPrcsDetailVO paramVO) throws Exception { + insert("VEPrcsAplctPrdDAO.insert", paramVO); + } + + *//** + * 상세보기 - R + * @param CndtnTrgtInfoMngVO + * @return + * @throws Exception + *//* + public VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetail", paramVO); + } + + *//** + * 수정 - U + * @param CndtnTrgtInfoMngVO + * @return + * @throws Exception + *//* + public int update(VEPrcsDetailVO paramVO) throws Exception { + return update("VEPrcsAplctPrdDAO.update", paramVO); + } + + *//** + * 삭제 - D + * @param addrAgencyVO + * @return + * @throws Exception + *//* + public int delete(VEPrcsDetailVO paramVO) throws Exception { + return delete("VEPrcsAplctPrdDAO.delete", paramVO); + } + + //L + public List selectList(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectList", paramVO); + return tlist; + } + + public List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectList4Fndth", paramVO); + return tlist; + } + + + *//** + * L - Page + * @param addrVO + * @return + * @throws Exception + *//* + public List selectPagingList(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList", paramVO); + return tlist; + } + + public List selectPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList4Fndth", paramVO); + return tlist; + } + + public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne", paramVO); + } + + public VEPrcsDetailVO selectDetailNewOne4Fndth(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne4Fndth", paramVO); + } + + public List selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { + return (List) list("VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList", vEPrcsDetailVO); + }*/ + + public List selectPagingList(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cmdTrgtInfoMngDAO.selectPagingList", cndtnTrgtInfoMngVO); + } + + public void insert(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + insert("cmdTrgtInfoMngDAO.insert", cndtnTrgtInfoMngVO); + } + + public int insert4Merge(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return update("cmdTrgtInfoMngDAO.insert4Merge", cndtnTrgtInfoMngVO); + } + + public CmdTrgtMngVO selectDetail(CmdTrgtMngVO cndtnTrgtInfoVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.selectDetail", cndtnTrgtInfoVO); + } + + public CmdTrgtMngVO selectDetail4Merge(CmdTrgtMngVO cndtnTrgtInfoVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.selectDetail4Merge", cndtnTrgtInfoVO); + } + + public CmdTrgtMngVO selectCheck4Merge(CmdTrgtMngVO cndtnTrgtInfoVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.selectCheck4Merge", cndtnTrgtInfoVO); + } + + public CmdTrgtMngVO selectDetailReqNmbr(CmdTrgtMngVO cndtnTrgtInfoVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.selectDetailReqNmbr", cndtnTrgtInfoVO); + } + + public void update(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + update("cmdTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO); + } + + public void update4Merge(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + update("cmdTrgtInfoMngDAO.update4Merge", cndtnTrgtInfoMngVO); + } + + public String findByTrgtNmAndDBirthAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (String) select("cmdTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd", cndtnTrgtInfoMngVO); + } + + public List checkSspnIdtmtStep1(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cmdTrgtInfoMngDAO.checkSspnIdtmtStep1", cndtnTrgtInfoMngVO); + } + + public List checkSspnIdtmtStep2(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cmdTrgtInfoMngDAO.checkSspnIdtmtStep2", cndtnTrgtInfoMngVO); + } + + public CmdTrgtMngVO checkSspnIdtmtNewStep0(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.checkSspnIdtmtNewStep0", cndtnTrgtInfoMngVO); + } + + public void updateUserId(CmdTrgtMngVO CmdTrgtMngVO) { + update("cmdTrgtInfoMngDAO.updateUserId", CmdTrgtMngVO); + } + + public void updateUserIdCancel(CmdTrgtMngVO CmdTrgtMngVO) { + update("cmdTrgtInfoMngDAO.updateUserIdCancel", CmdTrgtMngVO); + } + + public String findByTrgtNmAndDBirthAndUserIdAndEduStateCd(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (String) select("cmdTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd", cndtnTrgtInfoMngVO); + } + + public int findCntreqNmber(String reqNmbrTemp) { + return (int) select("cmdTrgtInfoMngDAO.findCntreqNmber", reqNmbrTemp); + } + + public void updateTrgtDuplAjax(CmdTrgtMngVO CmdTrgtMngVO) { + update("cmdTrgtInfoMngDAO.updateTrgtDuplAjax", CmdTrgtMngVO); + } + + public void updateDel(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + update("cmdTrgtInfoMngDAO.updateDel", cndtnTrgtInfoMngVO); + } + + public List selectDuplChk(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cmdTrgtInfoMngDAO.selectDuplChk", cndtnTrgtInfoMngVO); + } + + public void bulkInsert(List trgtExcelVOList) { + insert("cmdTrgtInfoMngDAO.bulkInsert", trgtExcelVOList); + } + + public int memoUpdate(CmdTrgtMngVO cndtnTrgtInfoMngVO) throws Exception { + return update("cmdTrgtInfoMngDAO.memoUpdate", cndtnTrgtInfoMngVO); + } + + public void updateEduStateCdAndReqStateCdAjax(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + update("cmdTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax", cndtnTrgtInfoMngVO); + } + + public void deleteEduReqAjax(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + update("cmdTrgtInfoMngDAO.deleteEduReqAjax", cndtnTrgtInfoMngVO); + } + + public VEAStngVO selectSMSSndString(VEAStngVO vEAStngVO) { + return (VEAStngVO) select("cmdTrgtInfoMngDAO.selectSMSSndString", vEAStngVO); + } + + public void updateSMSSndString(VEAStngVO vEAStngVO) { + update("cmdTrgtInfoMngDAO.updateSMSSndString", vEAStngVO); + } + + public CmdTrgtMngVO findByEduAplctOrdAndMberId(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (CmdTrgtMngVO) select("cmdTrgtInfoMngDAO.findByEduAplctOrdAndMberId", cndtnTrgtInfoMngVO); + } + + public List selectListRelated(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cmdTrgtInfoMngDAO.selectListRelated", cndtnTrgtInfoMngVO); + } + +} diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngServiceImpl.java b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngServiceImpl.java new file mode 100644 index 00000000..9d4bc80e --- /dev/null +++ b/src/main/java/kcc/ve/oprtn/cmdTrgt/trgtMng/service/impl/CmdTrgtMngServiceImpl.java @@ -0,0 +1,154 @@ +package kcc.ve.oprtn.cmdTrgt.trgtMng.service.impl; + + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; + +@Service("cmdTrgtInfoMngService") +public class CmdTrgtMngServiceImpl implements CmdTrgtMngService { + + + //과정신청기간순번 + @Resource(name="prcsAplctPrdGnrService") + private EgovIdGnrService prcsAplctPrdGnrService; + + //과정 + + //대상자 + @Resource(name="cmdTrgtInfoMngDAO") + private CmdTrgtMngDAO cndtnTrgtInfoMngDAO; + + @Override + public List selectPagingList(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return cndtnTrgtInfoMngDAO.selectPagingList(cndtnTrgtInfoMngVO); + } + + @Override + public void insert(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.insert(cndtnTrgtInfoMngVO); + + } + + @Override + public int insert4Merge(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + //postgre에서는 tibero의 merge 구문이 없으므로 단계를 나눠서 처리한다. + //step1.기 존재하는가? + CmdTrgtMngVO cndtnTrgtMngVO = cndtnTrgtInfoMngDAO.selectCheck4Merge(cndtnTrgtInfoMngVO); + + if (cndtnTrgtMngVO == null) { //step2-2.없으면 insert + cndtnTrgtInfoMngDAO.insert(cndtnTrgtInfoMngVO); + }else { //step2-1.있으면 update + cndtnTrgtInfoMngDAO.update4Merge(cndtnTrgtInfoMngVO); + } + + //return cndtnTrgtInfoMngDAO.insert4Merge(cndtnTrgtInfoMngVO); + return 1; + + } + + @Override + public CmdTrgtMngVO selectDetail(CmdTrgtMngVO cndtnTrgtInfoVO) { + return cndtnTrgtInfoMngDAO.selectDetail(cndtnTrgtInfoVO); + } + + @Override + public CmdTrgtMngVO selectDetail4Merge(CmdTrgtMngVO cndtnTrgtInfoVO) { + return cndtnTrgtInfoMngDAO.selectDetail4Merge(cndtnTrgtInfoVO); + } + + @Override + public CmdTrgtMngVO selectCheck4Merge(CmdTrgtMngVO cndtnTrgtInfoVO) { + return cndtnTrgtInfoMngDAO.selectCheck4Merge(cndtnTrgtInfoVO); + } + + @Override + public CmdTrgtMngVO selectDetailReqNmbr(CmdTrgtMngVO cndtnTrgtInfoVO) { + return cndtnTrgtInfoMngDAO.selectDetailReqNmbr(cndtnTrgtInfoVO); + } + + @Override + public void update(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.update(cndtnTrgtInfoMngVO); + + } + + @Override + public void updateUserId(CmdTrgtMngVO cndtnTrgtMngVO) { + cndtnTrgtInfoMngDAO.updateUserId(cndtnTrgtMngVO); + } + + @Override + public void updateUserIdCancel(CmdTrgtMngVO CmdTrgtMngVO) { + cndtnTrgtInfoMngDAO.updateUserIdCancel(CmdTrgtMngVO); + } + + @Override + public int findCntreqNmber(String reqNmbrTemp) { + return cndtnTrgtInfoMngDAO.findCntreqNmber(reqNmbrTemp); + } + + @Override + public void updateTrgtDuplAjax(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.updateTrgtDuplAjax(cndtnTrgtInfoMngVO); + + } + + @Override + public void updateDel(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.updateDel(cndtnTrgtInfoMngVO); + } + + @Override + public List selectDuplChk(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return cndtnTrgtInfoMngDAO.selectDuplChk(cndtnTrgtInfoMngVO); + } + + @Override + public void bulkInsert(List trgtExcelVOList) { + cndtnTrgtInfoMngDAO.bulkInsert(trgtExcelVOList); + } + + @Override + public void updateEduStateCdAndReqStateCdAjax(CmdTrgtMngVO cndtnTrgtMngVO) { + cndtnTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO); + } + + @Override + public void deleteEduReqAjax(CmdTrgtMngVO cndtnTrgtMngVO) { + cndtnTrgtInfoMngDAO.deleteEduReqAjax(cndtnTrgtMngVO); + } + + //비공개메모 update + @Override + public int memoUpdate(CmdTrgtMngVO cndtnTrgtInfoMngVO) throws Exception { + return cndtnTrgtInfoMngDAO.memoUpdate(cndtnTrgtInfoMngVO); + } + + @Override + public VEAStngVO selectSMSSndString(VEAStngVO vEAStngVO) { + return cndtnTrgtInfoMngDAO.selectSMSSndString(vEAStngVO); + } + + @Override + public void updateSMSSndString(VEAStngVO vEAStngVO) { + cndtnTrgtInfoMngDAO.updateSMSSndString(vEAStngVO); + } + + @Override + public CmdTrgtMngVO findByEduAplctOrdAndMberId(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return cndtnTrgtInfoMngDAO.findByEduAplctOrdAndMberId(cndtnTrgtInfoMngVO); + } + + @Override + public List selectListRelated(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + return cndtnTrgtInfoMngDAO.selectListRelated(cndtnTrgtInfoMngVO); + } +} diff --git a/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java new file mode 100644 index 00000000..d19c1eae --- /dev/null +++ b/src/main/java/kcc/ve/oprtn/cmdTrgtInfo/trgtMng/web/CmdTrgtMngController.java @@ -0,0 +1,2836 @@ +package kcc.ve.oprtn.cmdTrgtInfo.trgtMng.web; + +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; +import java.util.Set; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.ComDefaultCodeVO; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.CmmnDetailCode; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.spring.data.util.ExcelUtil; +import kcc.com.cmm.util.DateUtil; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckFileUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.fcc.service.ITNotiUtil; +import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl.TrgtExcelReader; +import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO; + +/** + * 기반강화연수(관리자) + * 기반강화연수에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2023.07.12 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn") +public class CmdTrgtMngController { + + private static final Logger LOGGER = LoggerFactory.getLogger(CmdTrgtMngController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //온라인콘텐츠과정 관리 + @Resource(name = "vEPrcsOnlnCntntService") + private VEPrcsOnlnCntntService vEPrcsOnlnCntntService; + + + //과정 관리 + @Resource(name = "cndtnTrgtInfoMngService") + private CndtnTrgtMngService cndtnTrgtInfoMngService; + + //과정 관리 - 시정명령 + @Resource(name = "cmdTrgtInfoMngService") + private CmdTrgtMngService cmdTrgtInfoMngService; + + //교육과정순번 + @Resource(name="prcsGnrService") + private EgovIdGnrService prcsGnrService; + + //기소유예대상자 + @Resource(name="trgtOrdService") + private EgovIdGnrService trgtOrdService; + + //과정온라인콘텐츠순번 + @Resource(name="prcsOnlnGnrService") + private EgovIdGnrService prcsOnlnGnrService; + + + //과정차시 관리 + @Resource(name = "vEPrcsAplctPrdService") + private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + + //파일정보의 관리 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService egovCmmUseService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //알림 + @Resource(name = "iTNotiUtil") + private ITNotiUtil iTNotiUtil; + + //과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + /* + + // 교육신청 서비스단 + @Resource(name = "AdjReqMgrService") + private AdjReqMgrService adjReqMgrService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + */ + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtList.do") + public String trgtList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 +// LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + String userWork = this.getUserWork(request); + cndtnTrgtInfoMngVO.setSearchCondition(userWork); + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //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(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())){ + //cndtnTrgtInfoMngVO.setSearchKeywordFrom(egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom())); + selectCondition = " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + //cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + } + + //생년월일검색 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordTo())){ + selectCondition = " AND a.d_birth ='" +cndtnTrgtInfoMngVO.getSearchKeywordTo() + "' "; + + } + + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + +// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + List cndtnTrgtInfoMngVOList = null; + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + + //복호화 + //cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + + + return "oprtn/cmdTrgt/trgtList"; + } + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateEduStateCdAndReqStateCdAjax.do") + public ModelAndView updateEduStateCdAndReqStateCdAjax( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtMngVO + , ModelMap model + , HttpServletRequest request + ) 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(); //권한에 따른 로그인 정보 가져오기 + cndtnTrgtMngVO.setLastUpdusrId(loginVO.getUniqId()); + + // 대괄호 제거 + List resultList = new ArrayList<>(); + for (String list : cndtnTrgtMngVO.getSspnIdtmtTrgtOrdList()) { + resultList.add(list.replace("[","").replace("]","")); // 내부 리스트의 모든 요소를 resultList에 추가 + } + + cndtnTrgtMngVO.setSspnIdtmtTrgtOrdList(resultList); + + try { + cmdTrgtInfoMngService.updateEduStateCdAndReqStateCdAjax(cndtnTrgtMngVO); + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + //교육대상자 삭제 + @RequestMapping("/kccadr/oprtn/cmdTrgt/deleteEduReqAjax.do") + public ModelAndView deleteEduReqAjax( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtMngVO + , ModelMap model + , HttpServletRequest request + ) 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(); //권한에 따른 로그인 정보 가져오기 + cndtnTrgtMngVO.setLastUpdusrId(loginVO.getUniqId()); + try { + + + cmdTrgtInfoMngService.deleteEduReqAjax(cndtnTrgtMngVO); + + + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + + /** + * @methodName : getUserWork + * @author : 이호영 + * @date : 2023.11.07 + * @description : 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기 + * @param request + * @return + */ + private String getUserWork(HttpServletRequest request) { + + String userWork = ""; + HttpSession session = request.getSession(); + LoginVO loginVO = (LoginVO) session.getAttribute("LoginVO"); + String authority = loginVO.getAuthority(); + // 관할청 담당자일때 + if("ROLE_ADR_JRSDC".equals(authority)) { + userWork = loginVO.getUserWork(); + } + // TODO Auto-generated method stub + return userWork; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngList.do") + public String trgtMngList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + 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)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //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(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())) { + if("1".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //전체 + selectCondition += " AND (a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "+" OR a.prsctr_nm ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "+" OR a.vnt_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "+" OR a.req_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "') "; + }else if("2".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //성명 + selectCondition += " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + }else if("3".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //검사명 + selectCondition += " AND a.prsctr_nm ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + }else if("4".equals(cndtnTrgtInfoMngVO.getSrchCndt1())) { //사건번호 + selectCondition += " AND a.vnt_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + }else { //의뢰번호 + selectCondition += " AND a.req_nmbr ='" +cndtnTrgtInfoMngVO.getSearchKeywordFrom() + "' "; + } + } + + + //생년월일검색 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordTo())){ + selectCondition += " AND a.d_birth ='" +cndtnTrgtInfoMngVO.getSearchKeywordTo() + "' "; + + } + + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getSearchSelStatus())) + { + cndtnTrgtInfoMngVO.setSearchSelStatusToList(cndtnTrgtInfoMngVO.getSearchSelStatus()); + } + + List cndtnTrgtInfoMngVOList = null; + + try { + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + return "oprtn/cmdTrgt/trgtMngList"; + } + + /** + * @methodName : trgtCmpltList + * @author : 이호영 + * @date : 2023.10.20 + * @description : 대상자 이수 목록 + * @param cndtnTrgtInfoMngVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtCmpltList.do") + public String trgtCmpltList( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //성명검색 + String selectCondition = ""; + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeywordFrom())){ + selectCondition += " AND a.trgt_nm = '" +egovCryptoUtil.encrypt(cndtnTrgtInfoMngVO.getSearchKeywordFrom()) + "' "; + cndtnTrgtInfoMngVO.setSearchQuery(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); + + } + +// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + List cndtnTrgtInfoMngVOList = null; + try { + // 이수 조건 추가 + cndtnTrgtInfoMngVO.setEduStateCd("20"); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + return "oprtn/cmdTrgt/trgtCmpltList"; + } + + /** + * 조건부기소유예대상자 중복확인 화면-등록관리 + */ + //@RequestMapping("trgtDplctChk.do") + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngDplctChk.do") + public String trgtMngDplctChk( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + return "oprtn/cmdTrgt/trgtMngDplctChk"; + } + + /** + * 조건부기소유예대상자 중복확인 화면-대상자관리 + */ + //@RequestMapping("trgtDplctChk.do") + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtDplctChk.do") + public String trgtDplctChk( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + return "oprtn/cmdTrgt/trgtDplctChk"; + } + + /** + * 조건부기소유예대상자 등록 화면 + */ + //@RequestMapping("eduPrcsMngReg.do") + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtReg.do") + public String cndtnEduPrcsMngReg( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + // 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기 + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + + + // CODE 값을 저장할 Set (중복을 제거하기 위해 사용) + HashSet uniqueCodes = new HashSet<>(); + + for(CmmnDetailCode vo : CmmnDetailCodeList) { + uniqueCodes.add(vo.getCode().split("-")[0]); + } + + ArrayList al = new ArrayList<>(uniqueCodes); + + Collections.sort(al); + + + + model.addAttribute("CmmnDetailCodeList", al); + + + //병합대상자 정보 + CmdTrgtMngVO cndtnTrgtInfoVO = new CmdTrgtMngVO(); + cndtnTrgtInfoVO.setCmdTrgtInfoOrd(cndtnTrgtInfoMngVO.getPrcsAplctPrdOrdCmplt()); + cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoVO); + + model.addAttribute("mergeInfo", cndtnTrgtInfoVO); + + + return "oprtn/cmdTrgt/trgtReg"; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/selectCmptntAthrtCodeAjax.do") + public ModelAndView selectCmptntAthrtCodeAjax( + @ModelAttribute("comDefaultCodeVO") ComDefaultCodeVO comDefaultCodeVO + , ModelMap model + , HttpServletRequest request + ) 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 로그인 정보 가져오기 + + System.out.println("comDefaultCodeVO.getCodeNm() : "+ comDefaultCodeVO.getCodeNm()); + comDefaultCodeVO.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailLikeNmOrderByCode(comDefaultCodeVO); + + + modelAndView.addObject("cmmnCodeList", CmmnDetailCodeList); + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtRegAjax.do") + public ModelAndView cndtnEduPrcsMngRegAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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 로그인 정보 가져오기 + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + + try { + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth()) ) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + } + System.out.println(cndtnTrgtInfoMngVO.getdBirth()); + + cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO)); + + cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId()); + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일 + cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + //암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + cmdTrgtInfoMngService.insert(cndtnTrgtInfoMngVO); + // 병합을 하기위한 key + modelAndView.addObject("cmdTrgtInfoOrd", cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()); + modelAndView.addObject("result", "success"); + + //첨부파일 이름 변경하기 + List result = new ArrayList<>(); + FileVO fileCheck = new FileVO(); + fileCheck.setAtchFileId(s_scholSealAtchFileId); + result = fileService.selectFileInfs(fileCheck); + + for(int i=0; i < result.size(); i++) { + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getDBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm(); + orignlFileNm = orignlFileNm+"_"+(i+1); + orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn(); + result.get(i).setOrignlFileNm(orignlFileNm); + fileService.updateFileName(result.get(i)); + } + + }catch(Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", "fail"); + } + + + return modelAndView; + + } + + /** + * @methodName : trgtExcelRegAjax + * @author : 이호영 + * @date : 2024.01.08 + * @description : 대상자 EXCEL UPLOAD + * @param cndtnTrgtInfoMngVO + * @param model + * @param request + * @param multiRequest + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtExcelRegAjax.do") + public ModelAndView trgtExcelRegAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + modelAndView.addObject("result", "success"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + 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 로그인 정보 가져오기 + + + + // 파일 저장후 atchFileId return + String s_scholSealAtchFileId = this.getAtchFileId(request, multiRequest, modelAndView); + //TEST + //String s_scholSealAtchFileId = "FILE_000000000001530"; + + + // 등록 파일 select + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List fileList = fileService.selectFileInfs(fileVO); + + if(fileList.size() > 0) { + LOGGER.info(" ++ SAVE FILE INFO :: [{}] ", fileList.get(0).toString()); + FileVO fileInfoVO = fileList.get(0); + // 파일경로 + 파일명 생성 + String filePathAndNm = fileInfoVO.getFileStreCours() + fileInfoVO.getStreFileNm(); + + TrgtExcelReader excelReader = new TrgtExcelReader(filePathAndNm); + try { + LOGGER.info(" ++ Excel Read Start"); + // 엑셀 Read + List trgtExcelVOList = excelReader.readExcelFileFromCmdTrgt(); + LOGGER.info(" ++ Excel Read End Total :: [{}]", trgtExcelVOList.size()); + + + + int i = 0 ; + for(CmdTrgtMngVO cndtnTrgtMngVO : trgtExcelVOList) + { + cndtnTrgtMngVO.setCmdTrgtInfoOrd(trgtOrdService.getNextStringId()); + cndtnTrgtMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + + // 의뢰 상태코드 + ComDefaultCodeVO comDefaultReqCodeVO = new ComDefaultCodeVO(); + comDefaultReqCodeVO.setCodeId("VEA005"); + comDefaultReqCodeVO.setCodeDc(cndtnTrgtMngVO.getReqStateCd()); + cndtnTrgtMngVO.setReqStateCd( egovCmmUseService.selectCmmCodeDetailCode(comDefaultReqCodeVO) ); + + // 교육상태코드 + ComDefaultCodeVO comDefaultEduCodeVO = new ComDefaultCodeVO(); + comDefaultEduCodeVO.setCodeId("VEA002"); + comDefaultEduCodeVO.setCodeDc(cndtnTrgtMngVO.getEduStateCd()); + cndtnTrgtMngVO.setEduStateCd( egovCmmUseService.selectCmmCodeDetailCode(comDefaultEduCodeVO) ); + + // 성별 + ComDefaultCodeVO comDefaultSexCodeVO = new ComDefaultCodeVO(); + comDefaultSexCodeVO.setCodeId("COM014"); + comDefaultSexCodeVO.setCodeDc(cndtnTrgtMngVO.getSex()); + cndtnTrgtMngVO.setSex( egovCmmUseService.selectCmmCodeDetailCode(comDefaultSexCodeVO) ); + + // 관할청 + ComDefaultCodeVO comDefaultCmptntCodeVO = new ComDefaultCodeVO(); + comDefaultCmptntCodeVO.setCodeId("VEA008"); + comDefaultCmptntCodeVO.setCodeDc(cndtnTrgtMngVO.getCmptntAthrt()); + cndtnTrgtMngVO.setCmptntAthrt( egovCmmUseService.selectCmmCodeDetailCode(comDefaultCmptntCodeVO) ); + + //암호화 + cndtnTrgtMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtMngVO); + + + LOGGER.info(cndtnTrgtMngVO.toString()); + + + // 이수 상태일 경우 vea_aplct_detail_info TB에 INSERT 해야함 +// if("20".equals(cndtnTrgtMngVO.getEduStateCd())) +// { +// CndtnTrgtMngVO veaAplctDetailInfoVO = new CndtnTrgtMngVO(); +// +// } + + + + // TEST +// i++; +// if(i==10) +// break; + + } + + LOGGER.info(" 엑셀 insert :: [{}]건", trgtExcelVOList.size()); + + for(CmdTrgtMngVO cndtnTrgtMngVO : trgtExcelVOList) { + //병합이면 대상을 찾아서 넣는다. + System.out.println("cndtnTrgtMngVO.getMergeStatus()"); + System.out.println(cndtnTrgtMngVO.getMergeStatus()); + + //병합요청인지 확인 + if (cndtnTrgtMngVO.getMergeStatus()!=null && !"".equals(cndtnTrgtMngVO.getMergeStatus())) { + //가능한 병합대상을 찾는다. + CmdTrgtMngVO cndtnTrgtMergeVO = cmdTrgtInfoMngService.selectDetail4Merge(cndtnTrgtMngVO); + + //자기 자신으로 병합되지는 않는다. + if (cndtnTrgtMergeVO!=null && !cndtnTrgtMergeVO.getReqNmbr().equals(cndtnTrgtMngVO.getReqNmbr())) { + cndtnTrgtMngVO.setPrcsAplctPrdOrdCmplt(cndtnTrgtMergeVO.getCmdTrgtInfoOrd()); + } + } + + //excel 데이터를 넣거나, 업데이트 한다. + i+=cmdTrgtInfoMngService.insert4Merge(cndtnTrgtMngVO); + } + + modelAndView.addObject("resultCnt", i); + + } catch (Exception e) { + // TODO: handle exception + modelAndView.addObject("result", "fail"); + e.printStackTrace(); + } + + + // 파일이 없을 경우 + }else { + modelAndView.addObject("result", "fail"); + } + + + + return modelAndView; + + } + + + private String getAtchFileId(HttpServletRequest request, MultipartHttpServletRequest multiRequest, + ModelAndView modelAndView) throws Exception { //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = ""; + try { + + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "trgtExcel_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return ""; + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + return s_scholSealAtchFileId; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/excelUploadPopup.do") + public String excelUploadPopup( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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()); + + } + + +// return "/oprtn/cmdTrgt/popup/duplChkPopup"; + return "/oprtn/cmdTrgt/popup/excelUploadPopup"; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/duplChkPopup.do") + public String duplChkPopup( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //현재 등록자 정보 + CmdTrgtMngVO cndtnTrgtInfo = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + cndtnTrgtInfo = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfo); + + + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + + } + + //검색을 위한 암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + + + //병합대상자 검색 + cndtnTrgtInfoMngVO.setEduStateCd(""); + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + model.addAttribute("cndtnTrgtInfo", cndtnTrgtInfo); + + + + + return "/oprtn/cmdTrgt/popup/duplChkPopup"; + } + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/duplChkAjax.do") + public ModelAndView duplChkAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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.decryptCmdTrgtMngVOInfo(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.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + List cndtnTrgtDuplListVO = cmdTrgtInfoMngService.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; + + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/popup/duplChkTable.do") + public String duplChkTable( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + + //현재 등록자 정보 + CmdTrgtMngVO cndtnTrgtInfo = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + //cndtnTrgtInfo = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfo); + + + if(StringUtils.isEmpty(cndtnTrgtInfoMngVO.getdBirth())) { + cndtnTrgtInfoMngVO.setdBirth(cndtnTrgtInfoMngVO.getDBirth()); + + } + + //검색을 위한 암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + + + //병합대상자 검색 + cndtnTrgtInfoMngVO.setEduStateCd(""); + cndtnTrgtInfoMngVO.setCmdTrgtInfoOrd("중복확인"); + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + model.addAttribute("cndtnTrgtInfo", cndtnTrgtInfo); + + + + + return "/oprtn/cmdTrgt/duplChkTable"; + } + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + private String getReqNmbr(CmdTrgtMngVO cndtnTrgtInfoMngVO) { + + /* + * step1.관할청 코드 자르기 + * STEP2.저장용 의뢰번호 최대값 찾기 //A-춘천-%-24 - 동일지청의 올해 발급번호중에서 최대값을 찾아야 한다. + * STEP3.저장용 의뢰번호 만들기 //A-춘천-300-24 - 저장을 위해 선택한 관할청으로 저장용 값을 만든다. + */ + //현재 선택한 검찰청의 지검 코드 가져오기 + //CndtnTrgtMngVO vcndtnTrgtInfoMngVO = cndtnTrgtInfoMngService.selectDetailReqNmbr(cndtnTrgtInfoMngVO); + //step1.관할청 코드 자르기 + System.out.println("cndtnTrgtInfoMngVO.getCmptntAthrt()"); + System.out.println(cndtnTrgtInfoMngVO); + System.out.println(cndtnTrgtInfoMngVO.getCmptntAthrt()); + String s_athrt = cndtnTrgtInfoMngVO.getCmptntAthrt(); + String [] a_athrt = s_athrt.split("-"); //광주-600, 광주-601 + + //STEP2.저장용 의뢰번호 최대값 찾기 + ////System.out.println("cndtnTrgtInfoMngVO.getDBirth()"); + //System.out.println(cndtnTrgtInfoMngVO.getDBirth()); + //성인 미성년 구분 + String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getDBirth()); //A or Y + //검색용 의뢰번호 만들기 + String reqNmbrTemp_4_max = adultWhether+"-"+a_athrt[0] +"-%-"+DateUtil.getStringToLocalDateYear()+"-"; //A-춘천-%-24- + + + //int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%"); + int cnt = cmdTrgtInfoMngService.findCntreqNmber(reqNmbrTemp_4_max); + System.out.println(cnt); + System.out.println(cnt+1); + + + //STEP3.저장용 의뢰번호 만들기 + String reqNmbr_4_ret = adultWhether+"-"+s_athrt +"-"+DateUtil.getStringToLocalDateYear(); //A-춘천-%-24 + return reqNmbr_4_ret+"-"+(cnt+1); + + } + + /** + * @methodName : getIsAdultInKorea + * @author : 이호영 + * @date : 2023.11.07 + * @description : 성인이면 A, 미성년이면 Y + * @param birthDateString + * @return + */ + public static String getIsAdultInKorea(String birthDateString) { + String returnData = "Y"; + // 생년월일 포맷 정의 (예시: "yyyy-MM-dd") + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + + // 문자열로부터 LocalDate 객체 생성 + LocalDate birthDate = LocalDate.parse(birthDateString, formatter); + + // 현재 날짜 얻기 + LocalDate now = LocalDate.now(); + + // 생년월일과 현재 날짜 사이의 기간 계산 + Period period = Period.between(birthDate, now); + System.out.println("period.getYears() : "+ period.getYears()); + if(period.getYears() >= 19) { + returnData="A"; + } + // 만 나이가 19세 이상인지 확인 + return returnData; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMdfyAjax.do") + public ModelAndView trgtMdfyAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , 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 로그인 정보 가져오기 + + + //step2.첨부파일 체크 후 저장 하기 + String s_scholSealAtchFileId = ""; + s_scholSealAtchFileId = cndtnTrgtInfoMngVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_scholSealAtchFileId = ""; + } + + + //step3.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //기존 파일 존재 여부에 따라서 insert or update 처리 + if ("".equals(s_scholSealAtchFileId)) { + //atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); + }else { + //atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + , s_scholSealAtchFileId + ); //EXT, MB size and ea + } + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + + //암호화 + cndtnTrgtInfoMngVO = egovCryptoUtil.encryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + + //수정 + cmdTrgtInfoMngService.update(cndtnTrgtInfoMngVO); + + try { + //첨부파일 이름 변경하기 + FileVO fileCheck = new FileVO(); + fileCheck.setAtchFileId(s_scholSealAtchFileId); + result = fileService.selectFileInfs(fileCheck); + + for(int i=0; i < result.size(); i++) { + cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoMngVO); + String orignlFileNm = cndtnTrgtInfoMngVO.getTrgtNm() + "_"+cndtnTrgtInfoMngVO.getdBirth()+"_"+cndtnTrgtInfoMngVO.getCmptntAthrtNm(); + orignlFileNm = orignlFileNm+"_"+(i+1); + orignlFileNm = orignlFileNm +"."+ result.get(i).getFileExtsn(); + result.get(i).setOrignlFileNm(orignlFileNm); + fileService.updateFileName(result.get(i)); + } + }catch(Exception ex){ + System.out.println("error"); + } + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + /** + * 대상자목록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtDetail.do") + public String trgtDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + + //병합대상자 검색 + //model = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + /* + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getDBirth())) + { + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); +// String selectCondition = "AND PRCS_APLCT_PRD_ORD_CMPLT is not null "; +// cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } + */ + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + /* + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + cndtnTrgtInfoMngVO.setTrgtNm(""); + + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + cndtnTrgtInfoMngVO.setSearchQuery(" AND a.prcs_aplct_prd_ord_cmplt='"+cndtnTrgtInfoMngVO.getSspnIdtmtTrgtOrd()+"' "); + cndtnTrgtInfoMergeVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + } + */ + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + + //상위 병합 대상자 + List cndtnTrgtInfoTopMngVOList = this._getTopMergeList(cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoTopMngVOList); + model.addAttribute("listTopMerge", cndtnTrgtInfoTopMngVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/cmdTrgt/trgtDetail"; + } + + /** + * 대상자목록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngDetail.do") + public String trgtMngDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + + //병합대상자 검색 + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + //상위 병합 대상자 + List cndtnTrgtInfoTopMngVOList = this._getTopMergeList(cndtnTrgtInfoMngVO); + System.out.println("=========================================="); //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoTopMngVOList); + model.addAttribute("listTopMerge", cndtnTrgtInfoTopMngVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/cmdTrgt/trgtMngDetail"; + } + + /** + * 조건부기소유예과정 등록 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/delUpdateAjax.do") + public ModelAndView delUpdateAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + cmdTrgtInfoMngService.updateDel(cndtnTrgtInfoMngVO); + + + + modelAndView.addObject("result", "success"); + + return modelAndView; + + } + + /** + * 조건부기소유예과정 수료자 상세화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtCmpltDetail.do") + public String trgtCmpltDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + + model.addAttribute("info", cndtnTrgtInfoVO); + //세부과정 목록 조회 + + + //병합대상자 검색 + /* + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(cndtnTrgtInfoMngVO.getDBirth())) + { + cndtnTrgtInfoMngVO.setFirstIndex(0); + cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); +// String selectCondition = "AND PRCS_APLCT_PRD_ORD_CMPLT is not null "; +// cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } + model.addAttribute("list", cndtnTrgtInfoMngVOList); + */ + List cndtnTrgtInfoMngVOList = this._getMergeSearchList(model, cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = this._getMergeList(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoMergeVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMergeVOList); + + model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + + + //이력정보 + List cndtnTrgtMngVOList = cmdTrgtInfoMngService.selectListRelated(cndtnTrgtInfoMngVO); + model.addAttribute("cndtnTrgtMngVOList", cndtnTrgtMngVOList); + + + return "oprtn/cmdTrgt/trgtCmpltDetail"; + } + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/updateTrgtDuplAjax.do") + public ModelAndView updateEduAplctAprvlCd( + @ModelAttribute("vEPrcsDetailVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) 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(); //권한에 따른 로그인 정보 가져오기 + + try { + // 교육 신청 테이블에 신청자 상태값 update +// vEAPrcsAplctPrdInstrAsgnmService.udpateAprvlCdEduAplct(vEPrcsDetailVO); + cmdTrgtInfoMngService.updateTrgtDuplAjax(cndtnTrgtInfoMngVO); + + modelAndView.addObject("result", "success"); + + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", ""); + } + + + return modelAndView; + + } + + /** + * 조건부기소유예과정 수정화면 + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMdfy.do") + public String trgtMdfy( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + try { + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + // 관할청 공통코드 + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + return "oprtn/cmdTrgt/trgtMdfy"; + } + + + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngMdfy.do") + public String trgtMngMdfy( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + try { + //과정 조회 + CmdTrgtMngVO cndtnTrgtInfoVO = cmdTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + + //복호화 + cndtnTrgtInfoVO = egovCryptoUtil.decryptCmdTrgtMngVOInfo(cndtnTrgtInfoVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + /* + // 관할청 공통코드 + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + */ + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); + + + // CODE 값을 저장할 Set (중복을 제거하기 위해 사용) + Set uniqueCodes = new HashSet<>(); + + for(CmmnDetailCode vo : CmmnDetailCodeList) { + uniqueCodes.add(vo.getCode().split("-")[0]); + } + + model.addAttribute("CmmnDetailCodeList", uniqueCodes); + + // 관할청 - 지역명 + String codeNm = cndtnTrgtInfoVO.getCmptntAthrt().split("-")[0]; + model.addAttribute("cmptntAthrtCode", codeNm); + + codeParam.setCodeNm(codeNm); + List CmmnDetailList = egovCmmUseService.selectCmmCodeDetailLikeNmOrderByCode(codeParam); + + + model.addAttribute("cmmnCodeList", CmmnDetailList); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + + return "oprtn/cmdTrgt/trgtMngMdfy"; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduQnaMngList.do") + public String cndtnEduQnaMngList( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); + + //기반강화 조회 + vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + +// if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){ +// String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')"; +// vEPrcsDetailVO.setSelectPagingListQuery(selectCondition); +// } + + List vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + + // 사용자 이름 디코딩 + vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm()))); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEPrcsDetailVOList); + + + return "oprtn/cmdTrgt/cndtnEduQnaMngList"; +// return "oprtn/fndthEnhanceTrn/fndthEduQnaMngList"; + } + + /** + * @methodName : cndtnEduQnaMngDetail + * @author : 이호영 + * @date : 2023.11.21 + * @description : + * @param vEPrcsDetailVO + * @param model + * @param redirectAttributes + * @param session + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduQnaMngDetail.do") + public String cndtnEduQnaMngDetail( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + System.out.println("vEPrcsDetailVO.getPrcsAplctPrdQnaOrd() : "+ vEPrcsDetailVO.getPrcsAplctPrdQnaOrd()); + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO); + vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm())); + + model.addAttribute("info", vEPrcsQnaDetail); + //세부과정 목록 조회 + + return "oprtn/cmdTrgt/cndtnEduQnaMngDetail"; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/cndtnEduQnaMngUpdateAjax.do") + public ModelAndView cndtnEduQnaMngUpdateAjax( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , ModelMap model + , HttpServletRequest request + ) 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 로그인 정보 가져오기 + + vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + vEPrcsDetailVO.setQnaAnswerer(loginVO.getUniqId()); //esntl_id + vEPrcsService.qnaUpdate(vEPrcsDetailVO); + + //알림 교육문의등록 + try { + iTNotiUtil.insertNotifyNew_60( + "60", + loginVO.getUniqId(), + VeConstants.NOTI_STATUS_92, + "", + vEPrcsDetailVO.getFrstRegisterId(), + "0", + "2" + ); + }catch(Exception ex) { + ex.printStackTrace(); + } + + //세부과정 지우고 다시 생성 + VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO(); + vEPrcsCntntVO.setPrcsOrd(vEPrcsDetailVO.getPrcsOrd()); + modelAndView.addObject("result", "success"); + return modelAndView; + } + + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtMngExcel.do") + public ModelAndView trgtMngExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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 cndtnTrgtInfoMngVOList = null; + + try { + //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 = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO 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", "CmptntAthrtNm", "DBirth", "TrgtNm", "Clphone" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + + , "PrsctrNm" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "대상자 목록", + width, + header, + order, + model + ); + + + + + + + //3.pageing step3 +// paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); +// +// model.addAttribute("paginationInfo", paginationInfo); +// +// +// //대상 리스트, 페이징 정보 전달 +// model.addAttribute("list", cndtnTrgtInfoMngVOList); +// +// ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); +// codeParam.setCodeId("VEA008"); +// List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); +// model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + modelAndView.addObject(model); + + return modelAndView; + } + + + //수료자 관리 엑셀 다운로드 + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtCmpltExcel.do") + public ModelAndView trgtCmpltExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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 cndtnTrgtInfoMngVOList = null; + + try { + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + paginationInfo.setRecordCountPerPage(100000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + // 이수 조건 추가 + cndtnTrgtInfoMngVO.setEduStateCd("20"); + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO tmp : cndtnTrgtInfoMngVOList) { + //의뢰읠 + tmp.setReqPnttm(tmp.getReqPnttm().substring(0, 10)); + //이름 복호화 + tmp.setTrgtNm(egovCryptoUtil.decrypt(tmp.getTrgtNm())); + //생년월일 - VO에 dbirth와 Dbirth 둘다 있음 + 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", "VntNmbr", "CmptntAthrtNm", "DBirth", "TrgtNm" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + , "PrsctrNm" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "수료자 목록", + width, + header, + order, + model + ); + + + + + + + //3.pageing step3 +// paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); +// +// model.addAttribute("paginationInfo", paginationInfo); +// +// +// //대상 리스트, 페이징 정보 전달 +// model.addAttribute("list", cndtnTrgtInfoMngVOList); +// +// ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); +// codeParam.setCodeId("VEA008"); +// List CmmnDetailCodeList = egovCmmUseService.selectCmmCodeDetailOrderByCode(codeParam); +// model.addAttribute("CmmnDetailCodeList", CmmnDetailCodeList); + + modelAndView.addObject(model); + + return modelAndView; + } + + //지청 담당자 excel 다운로드 + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtExcel.do") + public ModelAndView trgtExcel( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO 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 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 = cmdTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + + cndtnTrgtInfoMngVOList = egovCryptoUtil.decryptCmdTrgtMngVOList(cndtnTrgtInfoMngVOList); + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(CmdTrgtMngVO 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, 5000 + , 3000, 5000, 4000, 5000, 13000 + + , 3500, 13000 + }; // 너비 + String[] header = { + "의뢰일", "사건번호", "관할청", "생년월일", "성명", "연락처" + , "성별" , "의뢰번호", "의뢰상태", "교육상태", "주소" + , "검사명", "비공개메모" + }; // 헤더에 들어갈 이름 + String[] order = { + "ReqPnttm", "VntYear", "CmptntAthrtNm", "DBirth", "TrgtNm", "Clphone" + , "SexNm", "ReqNmbr", "ReqStateCdNm", "EduStateCdNm", "Addr" + + , "PrsctrNm", "Rmrks" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + + excelDown( + cndtnTrgtInfoMngVOList, + "대상자 목록", + width, + header, + order, + model + ); + + modelAndView.addObject(model); + + return modelAndView; + } + + /** + * 특이사항 등록/수정 처리 + */ + @RequestMapping("/oprtn/cmdTrgt/updateRmrksAjax.do") + public ModelAndView updateRmrksAjax( + @ModelAttribute("cndtnTrgtInfoMngVO") CmdTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) 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(); //권한에 따른 로그인 정보 가져오기 + + int successCnt = 0; + try { + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + cmdTrgtInfoMngService.memoUpdate(cndtnTrgtInfoMngVO); + + successCnt = successCnt+1; + + } catch (Exception ex) { + ex.printStackTrace(); + } + if (successCnt == 0) { + modelAndView.addObject("result", "fail"); + } else { + modelAndView.addObject("result", "success"); + } + + return modelAndView; + } + + @RequestMapping("/oprtn/cmdTrgt/popup/trgtSendSmsPopup.do") + public String eduDocReqAlertPopup( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model , HttpServletRequest request ) throws Exception { + + VEAStngVO vEAStngVO = new VEAStngVO(); + vEAStngVO.setStngCd("SND01"); + vEAStngVO = cmdTrgtInfoMngService.selectSMSSndString(vEAStngVO); + + model.addAttribute("vEAStngVO", vEAStngVO); + return "oprtn/cmdTrgt/popup/trgtSendSmsPopup"; + } + + @RequestMapping("/oprtn/cmdTrgt/popup/smsStringUpdateAjax.do") + public ModelAndView smsStringUpdateAjax( @ModelAttribute("vEEduAplctVO") VEAStngVO vEAStngVO , ModelMap model , HttpServletRequest request ) 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(); //권한에 따른 로그인 정보 가져오기 + + int successCnt = 0; + try { + + vEAStngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + vEAStngVO.setCn(vEAStngVO.getSmsCn()); + cmdTrgtInfoMngService.updateSMSSndString(vEAStngVO); + modelAndView.addObject("result", "success"); + } catch (Exception ex) { + ex.printStackTrace(); + modelAndView.addObject("result", "fail"); + } + + return modelAndView; + } + + + //교육신청 확정자 엑셀 다운로드 + @RequestMapping("/kccadr/oprtn/cmdTrgt/trgtEduAplctCnfrmExcel.do") + public ModelAndView trgtEduAplctCnfrmExcel( + @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO + , 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 vEPrcsDetailVOList = null; + + try { + + //과정 신청자 정보 가져오기 + //해당 과정을 제출한 사용자 정보를 가져온다. + VEEduAplctVO paramVO = new VEEduAplctVO(); + paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); + paramVO.setSbmtYn("Y"); + + // 검색 - 날짜 + paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt()); + paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt()); + // 검색 - 검색어 + paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus()); + paramVO.setSearchSelStatus(vEPrcsDetailVO.getSearchSelStatus()); + + if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) { + + //String searchQuery = "AND vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus(); + String searchQuery = "AND vsit.edu_state_cd = "+vEPrcsDetailVO.getSearchStatus(); + paramVO.setSearchQuery(searchQuery); + } + + + paramVO.setSiteId("60"); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소 + vEPrcsDetailVOList = vEEduMIXService.selectTrgtList4Cmplt(paramVO); + vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); + + + // + + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + for(VEEduAplctVO tmp : vEPrcsDetailVOList) { + //교육상태 + 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 (cmmnDetailCodeEduState!=null) tmp.setAplctStateCd((StringUtil.escapeXml(cmmnDetailCodeEduState.getCodeNm()))); + } + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + + + /* + int[] width = { + 4000, 5000, 5000, 5000, 3000 + }; // 너비 + String[] header = { + "신청자", "주민번호앞자리", "이메일", "연락처", "교육이수여부" + }; // 헤더에 들어갈 이름 + String[] order = { + "TrgtNm", "DBirth", "Email", "Phone", "EduStateCd" + }; // vo 내부의 필드 이름 (첫글자 대문자, 낙타체 사용) + */ + + List excelVOList = new ArrayList<>(); + + // util에서 vo의 모든 변수를 순회하기 때문에 느림 + // 필요한 변수들만 vo로 선언 + vEPrcsDetailVOList.forEach( vo -> { + ExcelVO excelVO = new ExcelVO(); + + excelVO.setRowNoStr(Integer.toString(vo.getRowNo())); + excelVO.setVntNmbr(vo.getVntYear() +"형제"+ vo.getVntNmbr()); + excelVO.setCmptntAthrt(vo.getCmptntAthrt()); + excelVO.setTitle(vo.getTitle()); + excelVO.setPrcsNm(vo.getPrcsNm()); + excelVO.setUserNm(vo.getUserNm()); + excelVO.setEmail(vo.getEmail()); + excelVO.setPhone(vo.getPhone()); + excelVO.setSbmtPnttm(vo.getSbmtPnttm()); + excelVO.setTrgtSex(vo.getTrgtSex()); + excelVO.setDBirth(vo.getDBirth()); + excelVO.setTrgtNm(vo.getTrgtNm()); + excelVO.setPrsctrNm(vo.getPrsctrNm()); + excelVO.setReqNmbr(vo.getReqNmbr()); + + + ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + /* + codeParam.setCodeId("VE0003"); + codeParam.setCode(vo.getAprvlCd()); + excelVO.setAprvlCd(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam)); + */ + excelVO.setAprvlCd(vo.getAplctStateCd()); + + //ComDefaultCodeVO codeParam = new ComDefaultCodeVO(); + codeParam.setCodeId("VEA008"); + codeParam.setCode(vo.getCmptntAthrt()); + excelVO.setCmptntAthrt(egovCmmUseService.selectCmmCodeDetailCodeValue(codeParam)); + + System.out.println(excelVO.getPrcsNm()); + + excelVOList.add(excelVO); + }); + + + + + + List excelData = new ArrayList<>(); + excelData.addAll(excelVOList); + + int[] width = { + 2000, 4000, 4000, 4000, 4000 + , 4000, 4000, 4000 + , 4000, 4000, 4000, 4000, 4000 + }; // 너비 + + String[] header = { + "순번", "신청자", "이메일", "핸드폰", "생년월일" + , "성별", "신청일", "상태" + , "관할청", "사건번호", "담당검사", "교육명", "의뢰번호" + }; + + String[] order = { + "RowNoStr", "TrgtNm", "Email", "Phone", "DBirth" + , "TrgtSex", "SbmtPnttm", "AprvlCd" + , "CmptntAthrt", "VntNmbr", "PrsctrNm", "Title", "ReqNmbr" + }; + + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, "교육확정상세-교육신청자"); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", "교육확정상세-교육신청자"); + /* + excelDown( + vEPrcsDetailVOList, + "교육확정상세-교육신청자", + width, + header, + order, + model + ); + */ + + modelAndView.addObject(model); + + return modelAndView; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEPrcsDetailVO p_vEPrcsDetailVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit()); + paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEPrcsDetailVO setPagingStep2( + VEPrcsDetailVO p_vEPrcsDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord"); + p_vEPrcsDetailVO.setSearchSortOrd("desc"); + } + + return p_vEPrcsDetailVO; + } + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEPrcsDetailVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + //CndtnTrgtInfoMngVO + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setCndtnPagingStep1( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_cndtnTrgtInfoMngVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_cndtnTrgtInfoMngVO.getPageUnit()); + paginationInfo.setPageSize(p_cndtnTrgtInfoMngVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private CmdTrgtMngVO setCndtnPagingStep2( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_cndtnTrgtInfoMngVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_cndtnTrgtInfoMngVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_cndtnTrgtInfoMngVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_cndtnTrgtInfoMngVO.setSearchSortCnd("prcs_ord"); + p_cndtnTrgtInfoMngVO.setSearchSortOrd("desc"); + } + + return p_cndtnTrgtInfoMngVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setCndtnPagingStep3( + List p_cndtnTrgtInfoMngVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_cndtnTrgtInfoMngVOList.size() > 0) totCnt = p_cndtnTrgtInfoMngVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + + @SuppressWarnings("unused") + private void excelDown( + List list, + String title, + int[] width, + String[] header, + String[] order, + ModelMap model + ){ + // 호출 + SXSSFWorkbook workbook; + try { + workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + //병합 대상자 검색 + private List _getMergeSearchList( + ModelMap p_model + , CmdTrgtMngVO p_cndtnTrgtInfoMngVO + ) throws Exception { + //병합대상자 검색 + List cndtnTrgtInfoMngVOList = new ArrayList(); + if(StringUtils.isNotEmpty(p_cndtnTrgtInfoMngVO.getTrgtNm()) || StringUtils.isNotEmpty(p_cndtnTrgtInfoMngVO.getDBirth())) + { + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + + //병합 대상자 검색 조건 추가 + String selectCondition = " AND a.prcs_aplct_prd_ord_cmplt IS NULL " //이미 병합 안된 사람 +// + " AND 0>=(SELECT count(*) FROM vea_sspn_idmt_trgt WHERE prcs_aplct_prd_ord_cmplt=a.sspn_idtmt_trgt_ord) " //소속 병합이 없어야 함 + + " AND a.sspn_idtmt_trgt_ord!='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "; //본인 제외 + p_cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + cndtnTrgtInfoMngVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + } + + return cndtnTrgtInfoMngVOList; + } + + //병합 대상자 + private List _getMergeList( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + p_cndtnTrgtInfoMngVO.setTrgtNm(""); + + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.prcs_aplct_prd_ord_cmplt='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"' "); + cndtnTrgtInfoMergeVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + + } + + return cndtnTrgtInfoMergeVOList; + //model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + } + + //상위 병합 대상자 + private List _getTopMergeList( + CmdTrgtMngVO p_cndtnTrgtInfoMngVO + )throws Exception{ + //병합 대상자 리스트 + List cndtnTrgtInfoMergeVOList = new ArrayList(); + { + p_cndtnTrgtInfoMngVO.setTrgtNm(""); + + p_cndtnTrgtInfoMngVO.setFirstIndex(0); + p_cndtnTrgtInfoMngVO.setRecordCountPerPage(100000); + p_cndtnTrgtInfoMngVO.setSearchQuery(" AND a.sspn_idtmt_trgt_ord =(SELECT prcs_aplct_prd_ord_cmplt FROM vea_sspn_idmt_trgt WHERE sspn_idtmt_trgt_ord='"+p_cndtnTrgtInfoMngVO.getCmdTrgtInfoOrd()+"') "); + cndtnTrgtInfoMergeVOList = cmdTrgtInfoMngService.selectPagingList(p_cndtnTrgtInfoMngVO); + + } + + return cndtnTrgtInfoMergeVOList; + //model.addAttribute("listMerge", cndtnTrgtInfoMergeVOList); + } +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/TrgtExcelReader.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/TrgtExcelReader.java index b1f4b398..4670ad41 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/TrgtExcelReader.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/TrgtExcelReader.java @@ -20,6 +20,7 @@ import org.apache.poi.ss.usermodel.WorkbookFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO; import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; public class TrgtExcelReader { @@ -93,6 +94,68 @@ public class TrgtExcelReader { return Collections.emptyList(); } } + + public List readExcelFileFromCmdTrgt() throws EncryptedDocumentException, InvalidFormatException { + + try (FileInputStream fis = new FileInputStream(filePathAndNm)) { + Workbook workbook = WorkbookFactory.create(fis); + Sheet sheet = workbook.getSheetAt(0); + List cndtnTrgtInfoMngVOList = new ArrayList<>(); + + // 첫 번째 행(헤더)을 건너뛰고 시작 + for (int i = 3; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + if (row != null) { + + try { + CmdTrgtMngVO cndtnTrgtMngVO = new CmdTrgtMngVO(); + +// cndtnTrgtMngVO.set getCellValue(row.getCell(0)); + cndtnTrgtMngVO.setReqPnttm(getCellValue(row.getCell(1))); // 의뢰번호 + + System.out.println("row.getCell(2)"); + System.out.println(row.getCell(2)); + + String vntInfo[] = getCellValue(row.getCell(2)).split("형제"); + + System.out.println("row.getCell(2)=="+i); + System.out.println(vntInfo.length); + System.out.println(vntInfo[0]); + System.out.println(vntInfo[1]); + + + cndtnTrgtMngVO.setVntYear( vntInfo[0] ); // 사건번호 년 + cndtnTrgtMngVO.setVntNmbr( vntInfo[1] ); // 사건번호 번호 + cndtnTrgtMngVO.setCmptntAthrt( getCellValue(row.getCell(3))); + cndtnTrgtMngVO.setdBirth( getCellValue(row.getCell(4)).replaceAll("-", "")); // 생년월일 + cndtnTrgtMngVO.setTrgtNm( getCellValue(row.getCell(5))); // 대상자 이름 + cndtnTrgtMngVO.setSex( getCellValue(row.getCell(6))); + cndtnTrgtMngVO.setAddr( getCellValue(row.getCell(7))); // 주소, detail과 구분해야함 + cndtnTrgtMngVO.setPost( getCellValue(row.getCell(8))); // 우편번호 + cndtnTrgtMngVO.setClphone( getCellValue(row.getCell(9)).replaceAll("-", "")); // 핸드폰 + cndtnTrgtMngVO.setReqNmbr( getCellValue(row.getCell(10))); // 의뢰번호 + cndtnTrgtMngVO.setPrsctrNm( getCellValue(row.getCell(11))); // 담당검사 이름 + + cndtnTrgtMngVO.setReqStateCd( getCellValue(row.getCell(12)) ); // 의뢰상태 코드 , if로 구분해야함 + cndtnTrgtMngVO.setEduStateCd( getCellValue(row.getCell(13))); // 교육 상태 코드 + //cndtnTrgtMngVO.setPrcsAplctPrdOrdCmplt( getCellValue(row.getCell(14))); // 병합상태코드 + cndtnTrgtMngVO.setMergeStatus(getCellValue(row.getCell(14))); // 병합상태text(excel전용) + cndtnTrgtMngVO.setRmrks( getCellValue(row.getCell(15))); // 비고 + + cndtnTrgtInfoMngVOList.add(cndtnTrgtMngVO); + + }catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + return cndtnTrgtInfoMngVOList; + } catch (IOException e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } private String getCellValue(Cell cell) { if (cell == null) { diff --git a/src/main/resources/egovframework/sqlmap/config/postgresql/sql-map-config-postgresql-ve.xml b/src/main/resources/egovframework/sqlmap/config/postgresql/sql-map-config-postgresql-ve.xml index 4f33ccdc..792a26ef 100644 --- a/src/main/resources/egovframework/sqlmap/config/postgresql/sql-map-config-postgresql-ve.xml +++ b/src/main/resources/egovframework/sqlmap/config/postgresql/sql-map-config-postgresql-ve.xml @@ -24,6 +24,9 @@ + + + diff --git a/src/main/resources/egovframework/sqlmap/let/sec/rmt/EgovRoleManage_SQL_Postgresql.xml b/src/main/resources/egovframework/sqlmap/let/sec/rmt/EgovRoleManage_SQL_Postgresql.xml index 0063f7bd..cfff9368 100644 --- a/src/main/resources/egovframework/sqlmap/let/sec/rmt/EgovRoleManage_SQL_Postgresql.xml +++ b/src/main/resources/egovframework/sqlmap/let/sec/rmt/EgovRoleManage_SQL_Postgresql.xml @@ -110,7 +110,10 @@ , ROLE_DC=#roleDc# , ROLE_TY=#roleTyp# , ROLE_SORT=#roleSort# + , ROLE_CREAT_DE=NOW() + /* , ROLE_CREAT_DE=TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24') + */ /* DATE_FORMAT(NOW(), '%Y-%m-%d %T') */ WHERE ROLE_CODE=#roleCode# ]]> diff --git a/src/main/resources/egovframework/sqlmap/ve/cmd/cmdTrgtInfoMng_SQL_Postgresql.xml b/src/main/resources/egovframework/sqlmap/ve/cmd/cmdTrgtInfoMng_SQL_Postgresql.xml new file mode 100644 index 00000000..40f2aae2 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/ve/cmd/cmdTrgtInfoMng_SQL_Postgresql.xml @@ -0,0 +1,970 @@ + + + + + + + + + + + + vea_cmd_trgt_info + + + + + cmd_trgt_info_ord + , user_id + , edu_state_cd + + , frst_regist_pnttm + , frst_register_id + , last_updt_pnttm + , last_updusr_id + + , trgt_nm + , clphone + , d_birth + , addr + , addr_detail + , post + , email + , req_pnttm + , vnt_year + , vnt_nmbr + , cmptnt_athrt + , sex + , req_nmbr + , prsctr_nm + , req_state_cd + , atch_file_id + + , prcs_aplct_prd_ord_cmplt + , edu_aplct_ord + , rmrks + + + + + + a.cmd_trgt_info_ord AS cmdTrgtInfoOrd + , a.user_id AS userId + , a.edu_state_cd AS eduStateCd + , a.frst_regist_pnttm AS frstRegistPnttm + , a.frst_register_id AS frstRegisterId + , a.last_updt_pnttm AS lastUpdtPnttm + , a.last_updusr_id AS lastUpdusrId + , a.trgt_nm AS trgtNm + , a.clphone AS clphone + , a.d_birth AS dBirth + , a.addr AS addr + , a.addr_detail AS addrDetail + , a.post AS post + , a.email AS email + , a.req_pnttm AS reqPnttm + , a.vnt_year AS vntYear + , a.vnt_nmbr AS vntNmbr + , a.cmptnt_athrt AS cmptntAthrt + , a.sex AS sex + , a.req_nmbr AS reqNmbr + , a.prsctr_nm AS prsctrNm + , a.req_state_cd AS reqStateCd + , a.atch_file_id AS atchFileId + , a.prcs_aplct_prd_ord_cmplt AS prcsAplctPrdOrdCmplt + , a.rmrks AS rmrks + + , a.edu_aplct_ord AS eduAplctOrd + + + + + + /* cmdTrgtInfoMngDAO.insert */ + + INSERT INTO ( + + )VALUES( + #cmdTrgtInfoOrd# + , #userId# + , #eduStateCd# + , NOW() + , #frstRegisterId# + , #lastUpdtPnttm# + , #lastUpdusrId# + , #trgtNm# + , #clphone# + , #dBirth# + , #addr# + , #addrDetail# + , #post# + , #email# + , NOW() + , #vntYear# + , #vntNmbr# + , #cmptntAthrt# + , #sex# + , #reqNmbr# + , #prsctrNm# + , #reqStateCd# + , #atchFileId# + , #prcsAplctPrdOrdCmplt# + , '' + , #rmrks# + ) + + + + + + /* cmdTrgtInfoMngDAO.insert4Merge */ + + MERGE INTO T1 USING DUAL + ON ( + T1.req_nmbr = #reqNmbr# + AND T1.vnt_nmbr = #vntNmbr# + AND T1.vnt_year = #vntYear# + AND T1.trgt_nm = #trgtNm# + AND T1.d_birth = #dBirth# + AND T1.sex = #sex# + ) + WHEN MATCHED THEN + UPDATE SET + + + edu_state_cd = #eduStateCd# + , last_updt_pnttm = NOW() + , last_updusr_id = #frstRegisterId# + , clphone = #clphone# + , addr = #addr# + , addr_detail = #addrDetail# + , post = #post# + , email = #email# + , req_pnttm = #reqPnttm# + + , cmptnt_athrt = #cmptntAthrt# + + , prsctr_nm = #prsctrNm# + , req_state_cd = #reqStateCd# + , atch_file_id = #atchFileId# + , prcs_aplct_prd_ord_cmplt = #prcsAplctPrdOrdCmplt# + , rmrks = #rmrks# + , edu_aplct_ord = #eduAplctOrd# + + + WHEN NOT MATCHED THEN + INSERT ( + + )VALUES( + #cmdTrgtInfoOrd# + , #userId# + , #eduStateCd# + + , NOW() + , #frstRegisterId# + , #lastUpdtPnttm# + , #lastUpdusrId# + + , #trgtNm# + , #clphone# + , #dBirth# + , #addr# + , #addrDetail# + , #post# + , #email# + , #reqPnttm# + , #vntYear# + , #vntNmbr# + , #cmptntAthrt# + , #sex# + , #reqNmbr# + , #prsctrNm# + , #reqStateCd# + , #atchFileId# + , #prcsAplctPrdOrdCmplt# + , #eduAplctOrd# + + , #rmrks# + + ) + + + + + + + + INSERT INTO ( + + )VALUES( + + #[]cmdTrgtInfoOrd# + , #[]userId# + , '' + , NOW() + , #[]frstRegisterId# + , '' + , '' + , #[]trgtNm# + , #[]clphone# + , #[]dBirth# + , #[]addr# + , #[]addrDetail# + , #[]post# + , #[]email# + , #[]reqPnttm# + , #[]vntYear# + , #[]vntNmbr# + , #[]cmptntAthrt# + , #[]sex# + , #[]reqNmbr# + , #[]prsctrNm# + , #[]reqStateCd# + , #[]atchFileId# + , '' + , '' + , #[]rmrks# + + ) + + + + + + + + + + + + + + + + /* cmdTrgtInfoMngDAO.update */ + UPDATE + + SET + edu_state_cd = #eduStateCd# + , last_updt_pnttm = NOW() + , last_updusr_id = #lastUpdusrId# + , trgt_nm = #trgtNm# + , clphone = #clphone# + , d_birth = #dBirth# + , addr = #addr# + , addr_detail = #addrDetail# + , post = #post# + , email = #email# + , req_pnttm = NOW() + , vnt_year = #vntYear# + , vnt_nmbr = #vntNmbr# + , cmptnt_athrt = #cmptntAthrt# + , sex = #sex# + , req_nmbr = #reqNmbr# + , prsctr_nm = #prsctrNm# + , req_state_cd = #reqStateCd# + , atch_file_id = #atchFileId# + WHERE + cmd_trgt_info_ord = #cmdTrgtInfoOrd# + + + + + /* cmdTrgtInfoMngDAO.update4Merge */ + UPDATE + + SET + edu_state_cd = #eduStateCd# + , last_updt_pnttm = NOW() + , last_updusr_id = #frstRegisterId# + , clphone = #clphone# + , addr = #addr# + , addr_detail = #addrDetail# + , post = #post# + , email = #email# + , req_pnttm = NOW() + + , cmptnt_athrt = #cmptntAthrt# + + , prsctr_nm = #prsctrNm# + , req_state_cd = #reqStateCd# + , atch_file_id = #atchFileId# + , prcs_aplct_prd_ord_cmplt = #prcsAplctPrdOrdCmplt# + , rmrks = #rmrks# + , edu_aplct_ord = #eduAplctOrd# + WHERE + req_nmbr = #reqNmbr# + AND vnt_nmbr = #vntNmbr# + AND vnt_year = #vntYear# + AND trgt_nm = #trgtNm# + AND d_birth = #dBirth# + AND sex = #sex# + + + + + /* cmdTrgtInfoMngDAO.updateTrgtDuplAjax */ + + UPDATE + + SET + prcs_aplct_prd_ord_cmplt = #cmdTrgtInfoOrd# + + + + , edu_state_cd = #eduStateCd# + + + + , vnt_year = #vntYear# + + + + , atch_file_id = #atchFileId# + + + + , edu_aplct_ord = #eduAplctOrd# + + + WHERE cmd_trgt_info_ord = #prcsAplctPrdOrdCmplt# + + + + + + + + + /* cmdTrgtInfoMngDAO.updateDel */ + + UPDATE + + SET + prcs_aplct_prd_ord_cmplt = null + + + , edu_state_cd = #eduStateCd# + + + WHERE + cmd_trgt_info_ord = #cmdTrgtInfoOrd# + + + + + + + + + + /* cmdTrgtInfoMngDAO.updateSspnIdtmtTrgtOrd */ + UPDATE + + SET + user_id = #userId# + + + , req_state_cd = #reqStateCd# + + + , edu_aplct_ord = #eduAplctOrd# + + + , edu_state_cd = #eduStateCd# + , prcs_aplct_prd_ord_cmplt = #prcsAplctPrdOrdCmplt# + WHERE + cmd_trgt_info_ord = #cmdTrgtInfoOrd# + + + + + /* cmdTrgtInfoMngDAO.updateSspnIdtmtTrgtOrd */ + UPDATE + + SET + user_id = NULL + , edu_aplct_ord = NULL + , edu_state_cd = '10' + , prcs_aplct_prd_ord_cmplt = NULL + WHERE + edu_aplct_ord = #eduAplctOrd# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* cmdTrgtInfoMngDAO.memoUpdate */ + UPDATE + SET + LAST_UPDT_PNTTM = NOW() + ,LAST_UPDUSR_ID = #lastUpdusrId# + ,RMRKS = #rmrks# + WHERE cmd_trgt_info_ord = #cmdTrgtInfoOrd# + + + + + /* cmdTrgtInfoMngDAO.updateEduStateCdAndReqStateCdAjax-cmdTrgtInfoMngDAO.memoUpdate */ + UPDATE + SET + REQ_STATE_CD = #reqStateCd# + , EDU_STATE_CD = #eduStateCd# + , LAST_UPDT_PNTTM = NOW() + , LAST_UPDUSR_ID = #lastUpdusrId# + + + , rmrks = rmrks || #rmrks# + + + WHERE cmd_trgt_info_ord IN + + #cmdTrgtInfoOrdList[]# + + + + + /* cmdTrgtInfoMngDAO.deleteEduReqAjax-cmdTrgtInfoMngDAO.memoUpdate */ + + DELETE FROM + + + WHERE cmd_trgt_info_ord IN + + #cmdTrgtInfoOrdList[]# + + + + + + + /* cmdTrgtInfoMngDAO.updateSMSSndString */ + UPDATE VEA_BASIC_INFO_STNG + SET + CN = #cn#, + LAST_UPDT_PNTTM = NOW(), + LAST_UPDUSR_ID = #lastUpdusrId# + WHERE stng_cd = #stngCd# + + + + + diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index 3d13946b..fd0e68a0 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -69,6 +69,7 @@ */oprtn/otsdCprtnPrcs/* */oprtn/fndthEnhanceTrn/* */oprtn/cndtnSspnIdtmt/* + */oprtn/cmdTrgt/* */oprtn/stts/sttsEduCnt.do */oprtn/stts/sttsEduContentCnt.jsp diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtList.jsp new file mode 100644 index 00000000..aac977e0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cmdTrgt/trgtList.jsp @@ -0,0 +1,851 @@ + +<%@ 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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +<% + /** + * @Class Name : cndtnEduPrcsMngList.jsp + * @Description : 조건부 기소유예 과정관리 목록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.14 조용준 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + 교육과정관리 + + +
+ + + + +
+
+
+
+ +
+ + + " /> + " /> + + + +
+
+ + +
+

대상자 목록(시정명령)

+
    +
  • +
  • +

    시정명령관리

    +
  • +
  • 대상자 목록(시정명령)
  • +
+
+ + +
+
+

대상자 목록

+
+ +
+ + + + + + +<%-- --%> +<%-- --%> +<%-- --%> + + + + +<%-- --%> + + + +<%-- --%> + + +<%-- --%> + + + + +
+
+

이름

+
+
+ + + +
+
+ +
+
+

생년월일

+
+
+ + + + +
+
+ +
+
+

의뢰일자

+
+
+
+ 의뢰일:
+ +
+ ~ +
+ +
+
+
+
+ +
+
+

의뢰상태 및 교육상태

+
+
+ + +
+

성별

+
+
+ +
+ +
+
+

엑셀 다운로드

+
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+ + + + + +
+
+ +
+

건의 접수가 검색되었습니다.

+
+ + + <%----%> +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="cursor:pointer;" + + + style="cursor:pointer;background-color:lightgray;" + + > + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + + + + +
의뢰일사건번호관할청생년월일성명성별의뢰번호의뢰상태교육상태주소검사명
+ + ');" style="cursor:pointer;"> + +<%-- --%> + + ');" style="cursor:pointer;"> + 형제 + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + ');" style="cursor:pointer;"> + + + 완료 + + + + + + + + 병합처리 + + +<%-- --%> + ${list.eduStateCdNm } + + ${fullAddr} +<%-- ${fn:length(fullAddr)> 50 ? fn:substring(fullAddr, 0, 50).concat('...') : ''} --%> + + +
+
+ + + +
+ +
+ + + +
+
+
+ + + +
+ + +