diff --git a/src/main/java/kcc/com/cmm/service/EgovFileMngService.java b/src/main/java/kcc/com/cmm/service/EgovFileMngService.java index 972c3d92..ad58134e 100644 --- a/src/main/java/kcc/com/cmm/service/EgovFileMngService.java +++ b/src/main/java/kcc/com/cmm/service/EgovFileMngService.java @@ -33,6 +33,10 @@ public interface EgovFileMngService { //압축 다운로드를 위한 첨부파일 목록 조회 public List selectZipFileList(FileVO fvo) throws Exception; + + //체험신청서 전용 + public List selectZipFileExprnList(FileVO fvo) throws Exception; + /** * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. * diff --git a/src/main/java/kcc/com/cmm/service/FileVO.java b/src/main/java/kcc/com/cmm/service/FileVO.java index f718b160..3b334774 100644 --- a/src/main/java/kcc/com/cmm/service/FileVO.java +++ b/src/main/java/kcc/com/cmm/service/FileVO.java @@ -96,7 +96,27 @@ public class FileVO implements Serializable { public String orderQuery; - public String getMaxFileNum() { + + public String scholInsttNm; //학교기관이름 + public String chrgNm; //담당자이름 + + public String getScholInsttNm() { + return scholInsttNm; + } + + public void setScholInsttNm(String scholInsttNm) { + this.scholInsttNm = scholInsttNm; + } + + public String getChrgNm() { + return chrgNm; + } + + public void setChrgNm(String chrgNm) { + this.chrgNm = chrgNm; + } + + public String getMaxFileNum() { return maxFileNum; } diff --git a/src/main/java/kcc/com/cmm/service/impl/EgovFileMngServiceImpl.java b/src/main/java/kcc/com/cmm/service/impl/EgovFileMngServiceImpl.java index 9ae76f2a..6ef34225 100644 --- a/src/main/java/kcc/com/cmm/service/impl/EgovFileMngServiceImpl.java +++ b/src/main/java/kcc/com/cmm/service/impl/EgovFileMngServiceImpl.java @@ -13,7 +13,6 @@ import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.FileVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; /** * @Class Name : EgovFileMngServiceImpl.java @@ -94,7 +93,12 @@ public class EgovFileMngServiceImpl extends EgovAbstractServiceImpl implements E public List selectZipFileList(FileVO fvo) throws Exception { return fileMngDAO.selectZipFileList(fvo); } - + + @Override + public List selectZipFileExprnList(FileVO fvo) throws Exception { + return fileMngDAO.selectZipFileExprnList(fvo); + } + /** * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. * diff --git a/src/main/java/kcc/com/cmm/service/impl/FileManageDAO.java b/src/main/java/kcc/com/cmm/service/impl/FileManageDAO.java index eb0a2910..8069c9ab 100644 --- a/src/main/java/kcc/com/cmm/service/impl/FileManageDAO.java +++ b/src/main/java/kcc/com/cmm/service/impl/FileManageDAO.java @@ -119,6 +119,11 @@ public class FileManageDAO extends EgovComAbstractDAO { return (List) list("FileManageDAO.selectZipFileList", vo); } + @SuppressWarnings("unchecked") + public List selectZipFileExprnList(FileVO vo) throws Exception { + return (List) list("FileManageDAO.selectZipFileExprnList", vo); + } + /** * 파일 구분자에 대한 최대값을 구한다. * 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 6082c9f8..492bc2a2 100644 --- a/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java +++ b/src/main/java/kcc/let/utl/fcc/service/EgovCryptoUtil.java @@ -15,6 +15,7 @@ import kcc.com.cmm.ComDefaultCodeVO; import kcc.com.cmm.ComDefaultVO; import kcc.com.cmm.service.CmmnDetailCode; import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.FileVO; import kcc.kccadr.sch.service.SchduleManageVO; import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uss.umt.service.UserManageVO; @@ -584,6 +585,25 @@ public class EgovCryptoUtil { // CndtnTrgtMngVO // + //VEEduAplctVOList - 복호화 + public List decryptFileVOList(List p_fileVOList){ + + for (int i=0;i vEEduAplctVOList = vEEduMIXService.selectExprnAtchFileDownList(vEEduAplctVO); - vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList); - //첨부파일있는 항목만 재배치 - String orgnZipNm = "체험교실 신청서.zip"; - String downloadType = "A"; - //첨부파일있는 항목만 재배치 - List atchFileIdList = new ArrayList(); - vEEduAplctVOList.forEach( vo -> { - if(vo.getScholSealAtchFileId() != null) { - atchFileIdList.add(vo.getScholSealAtchFileId()); - } - }); - - List fileYEduList = new ArrayList(); - vEEduAplctVOList.forEach( vo -> { - if(vo.getScholSealAtchFileId() != null) { - fileYEduList.add(vo); - } - }); - - FileVO fileVO = new FileVO(); - fileVO.setDownloadType(downloadType); - - fileVO.setAtchFileIdList(atchFileIdList); - List fvoList = fileService.selectZipFileList(fileVO); // 해당 기능에 맞게 파일 조회 - - int size = 1024; - byte[] buf = new byte[size]; - - String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm; - FileInputStream fis = null; - ZipArchiveOutputStream zos = null; - BufferedInputStream bis = null; - - - - - int fileCnt = 0; try { - System.out.println("outZipNm : "+ outZipNm); - // Zip 파일생성 - zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm))); - - Iterator fvoIterator = fvoList.iterator(); - Iterator fileYEduIterator = fileYEduList.iterator(); - - while (fvoIterator.hasNext() && fileYEduIterator.hasNext() ){ - FileVO vo = fvoIterator.next(); - VEEduAplctVO eduVO = fileYEduIterator.next(); - zos.setEncoding("UTF-8"); - - // Create a file object - File file = new File(vo.getFileStreCours() + "/" + vo.getStreFileNm()); - // 1. check if the file exists or not - boolean isExists = file.exists(); - if(isExists) { - System.out.println("getStreFileNm() " + vo.getStreFileNm()); - System.out.println("I find the existFile.txt"); - fileCnt++; - } else { - continue; + vEEduAplctVO.setEduAplctOrdList(Arrays.asList(vEEduAplctVO.getChk().split(","))); + List vEEduAplctVOList = vEEduMIXService.selectExprnAtchFileDownList(vEEduAplctVO); + vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList); + //첨부파일있는 항목만 재배치 + String orgnZipNm = "체험교실 신청서.zip"; + String downloadType = "A"; + //첨부파일있는 항목만 재배치 + List atchFileIdList = new ArrayList(); + vEEduAplctVOList.forEach( vo -> { + if(vo.getScholSealAtchFileId() != null) { + atchFileIdList.add(vo.getScholSealAtchFileId()); } - - /*String renamedFileName = generateRenamedFileName(vo.getOrignlFileNm());*/ - String renamedFileName = eduVO.getScholInsttNm() + "_" + eduVO.getChrgNm() + "_신청서."+ vo.getFileExtsn(); - vo.setOrignlFileNm(renamedFileName); - - //buffer에 해당파일의 stream을 입력한다. - fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm()); - - bis = new BufferedInputStream(fis,size); - - //zip에 넣을 다음 entry 를 가져온다. - zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm())); - - //준비된 버퍼에서 집출력스트림으로 write 한다. - int len; - while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len); - - bis.close(); - fis.close(); - zos.closeArchiveEntry(); + }); + + List fileYEduList = new ArrayList(); + vEEduAplctVOList.forEach( vo -> { + if(vo.getScholSealAtchFileId() != null) { + fileYEduList.add(vo); } - - zos.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - }finally{ - if( zos != null ) zos.close(); - if( fis != null ) fis.close(); - if( bis != null ) bis.close(); - } - - File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm); - long fSize = uFile.length(); - - if (fSize > 0) { - String mimetype = "application/x-msdownload"; + }); - response.setContentType(mimetype); - setDisposition(orgnZipNm, request, response); - //response.setContentLength(fSize); + FileVO fileVO = new FileVO(); + fileVO.setDownloadType(downloadType); + + fileVO.setAtchFileIdList(atchFileIdList); + List fvoList = fileService.selectZipFileExprnList(fileVO); // 해당 기능에 맞게 파일 조회 + fvoList = egovCryptoUtil.decryptFileVOList(fvoList); - BufferedInputStream in = null; - BufferedOutputStream out = null; + int size = 1024; + byte[] buf = new byte[size]; + String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm; + FileInputStream fis = null; + ZipArchiveOutputStream zos = null; + BufferedInputStream bis = null; + + + + + int fileCnt = 0; try { - in = new BufferedInputStream(new FileInputStream(uFile)); - out = new BufferedOutputStream(response.getOutputStream()); + System.out.println("outZipNm : "+ outZipNm); + // Zip 파일생성 + zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm))); - FileCopyUtils.copy(in, out); - out.flush(); - } catch (Exception ex) { - LOGGER.debug("IGNORED: {}", ex.getMessage()); - } finally { - if (in != null) { - try { - in.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - if (out != null) { - try { - out.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); + Iterator fvoIterator = fvoList.iterator(); + Iterator fileYEduIterator = fileYEduList.iterator(); + + while (fvoIterator.hasNext() && fileYEduIterator.hasNext() ){ + FileVO vo = fvoIterator.next(); + VEEduAplctVO eduVO = fileYEduIterator.next(); + zos.setEncoding("UTF-8"); + + // Create a file object + File file = new File(vo.getFileStreCours() + "/" + vo.getStreFileNm()); + // 1. check if the file exists or not + boolean isExists = file.exists(); + if(isExists) { + System.out.println("getStreFileNm() " + vo.getStreFileNm()); + System.out.println("I find the existFile.txt"); + fileCnt++; + } else { + continue; + } + + /*String renamedFileName = generateRenamedFileName(vo.getOrignlFileNm());*/ + //String renamedFileName = eduVO.getScholInsttNm() + "_" + eduVO.getChrgNm() + "_신청서."+ vo.getFileExtsn(); + String renamedFileName = vo.getScholInsttNm() + "_" + vo.getChrgNm() + "_신청서."+ vo.getFileExtsn(); + vo.setOrignlFileNm(renamedFileName); + + //buffer에 해당파일의 stream을 입력한다. + fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm()); + + bis = new BufferedInputStream(fis,size); + + //zip에 넣을 다음 entry 를 가져온다. + zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm())); + + //준비된 버퍼에서 집출력스트림으로 write 한다. + int len; + while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len); + + bis.close(); + fis.close(); + zos.closeArchiveEntry(); + } + + zos.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + }finally{ + if( zos != null ) zos.close(); + if( fis != null ) fis.close(); + if( bis != null ) bis.close(); + } + + File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + response.setContentType(mimetype); + setDisposition(orgnZipNm, request, response); + //response.setContentLength(fSize); + + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (Exception ex) { + LOGGER.debug("IGNORED: {}", ex.getMessage()); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + if (out != null) { + try { + out.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } } } + //파일 다운로드 후 파일 삭제 + File delFile = new File(outZipNm); + delFile.delete(); + } else { + response.setContentType("application/x-msdownload"); + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:
" + orgnZipNm + "

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); } - //파일 다운로드 후 파일 삭제 - File delFile = new File(outZipNm); - delFile.delete(); - } else { - response.setContentType("application/x-msdownload"); - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:
" + orgnZipNm + "

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); + + }catch(Exception ex) { + ex.printStackTrace(); } + } /** diff --git a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Tibero.xml index f4ee82a3..1e1f0f3f 100644 --- a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Tibero.xml @@ -18,6 +18,8 @@ + + @@ -87,6 +89,46 @@ ORDER BY b.FILE_SN + +