diff --git a/src/main/java/kcc/com/cmm/web/EgovFileMngController.java b/src/main/java/kcc/com/cmm/web/EgovFileMngController.java index 24b63d6a..2f07a0f1 100644 --- a/src/main/java/kcc/com/cmm/web/EgovFileMngController.java +++ b/src/main/java/kcc/com/cmm/web/EgovFileMngController.java @@ -421,6 +421,7 @@ public class EgovFileMngController { String atchFileId = (String) commandMap.get("param_atchFileId"); String eduAplctOrd = (String) commandMap.get("eduAplctOrd"); String type = (String) commandMap.get("type"); + String chgNm = (String) commandMap.get("chgNm"); fileVO.setAtchFileId(atchFileId); List result = fileService.selectFileInfs(fileVO); @@ -430,6 +431,7 @@ public class EgovFileMngController { model.addAttribute("atchFileId", atchFileId); model.addAttribute("eduAplctOrd", eduAplctOrd); model.addAttribute("type", type); + model.addAttribute("chgNm", chgNm); return "cmm/fms/selectRsltRprtFileWithDelete"; } @@ -463,7 +465,9 @@ public class EgovFileMngController { @RequestMapping("/cmm/fms/selectForNmChgFile.do") public String selectForNmChgFile(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, ModelMap model) throws Exception { String atchFileId = (String) commandMap.get("param_atchFileId"); - String chgNm = (String) commandMap.get("chgNm"); + String chgNm = (String) commandMap.get("chgNm"); //변경된 파일 이름 + String date = (String) commandMap.get("date"); + String viewNmChg = (String) commandMap.get("viewNmChg"); //화면에 보이는 파일 이름 변경 유무 ex) Y=화면에 뿌려줄 때도 변경된 이름으로. N=화면에는 오리지널 파일이름이 보이며 다운로드 시 변경된 파일이름으로 다운 fileVO.setAtchFileId(atchFileId); List result = fileService.selectFileInfs(fileVO); @@ -471,6 +475,8 @@ public class EgovFileMngController { model.addAttribute("fileListCnt", result.size()); model.addAttribute("atchFileId", atchFileId); model.addAttribute("chgNm", chgNm); + model.addAttribute("date", date); + model.addAttribute("viewNmChg", viewNmChg); return "cmm/fms/selectForNmChgFile"; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduMIXService.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduMIXService.java index 9334e45d..21341368 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduMIXService.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduMIXService.java @@ -114,4 +114,6 @@ public interface VEEduMIXService { List selectExprnAtchFileDownList(VEEduAplctVO paramVO) throws Exception; List selectTngrRsltRprtList(VEEduAplctVO paramVO) throws Exception; + + List selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXDAO.java index e2251bdc..891939fc 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXDAO.java @@ -284,4 +284,10 @@ public class VEEduMIXDAO extends EgovAbstractDAO { List tlist = (List) list("VEEduMIXDAO.selectTngrRsltRprtList", paramVO); return tlist; } + + public List selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception { + @SuppressWarnings("unchecked") + List tlist = (List) list("VEEduMIXDAO.selectExprnRsltFileDownList", paramVO); + return tlist; + } } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXServiceImpl.java index cf1e3783..004a7d8b 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/impl/VEEduMIXServiceImpl.java @@ -251,4 +251,8 @@ public class VEEduMIXServiceImpl implements VEEduMIXService { public List selectTngrRsltRprtList(VEEduAplctVO paramVO) throws Exception{ return vEEduMIXDAO.selectTngrRsltRprtList(paramVO); } + + public List selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception{ + return vEEduMIXDAO.selectExprnRsltFileDownList(paramVO); + } } diff --git a/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctMngController.java b/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctMngController.java index 76fe8224..3b632ec0 100644 --- a/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctMngController.java +++ b/src/main/java/kcc/ve/oprtn/cpyrgExprnClsrm/oprtnAplctMng/web/OprtnAplctMngController.java @@ -714,6 +714,213 @@ String[] order = { } } + /** + * 저작권 체험교실 결과보고 파일 유무 체크 + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value = "oprtnAplctRsltFileChkAjax.do") + public ModelAndView oprtnAplctRsltFileChkAjax(VEEduAplctVO vEEduAplctVO + , HttpServletRequest request, HttpServletResponse response) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + vEEduAplctVO.setEduAplctOrdList(Arrays.asList(vEEduAplctVO.getChk().split(","))); + List vEEduAplctVOList = vEEduMIXService.selectExprnRsltFileDownList(vEEduAplctVO); + + List atchFileIdList = new ArrayList(); + vEEduAplctVOList.forEach( vo -> { + if(vo.getOrgnlRsltAtchFileId() != null) { + atchFileIdList.add(vo.getOrgnlRsltAtchFileId()); + } + if(vo.getCpyRsltAtchFileId() != null) { + atchFileIdList.add(vo.getCpyRsltAtchFileId()); + } + if(vo.getEvdncPhtAtchFileId() != null) { + atchFileIdList.add(vo.getEvdncPhtAtchFileId()); + } + if(vo.getRmtTrnAtchFileId() != null) { + atchFileIdList.add(vo.getRmtTrnAtchFileId()); + } + }); + + if(atchFileIdList.size() < 1) { + modelAndView.addObject("result", "fail"); + modelAndView.addObject("msg", "첨부 파일이 없습니다."); + }else { + modelAndView.addObject("result", "success"); + } + + return modelAndView; + } + + /** + * 저작권 체험교실 운영현황 목록 결과보고 파일 일괄 다운로드 + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value = "oprtnAplctRsltFileDownLoad.do") + public void oprtnAplctRsltFileDownLoad(VEEduAplctVO vEEduAplctVO + , HttpServletRequest request, HttpServletResponse response) throws Exception { + + + vEEduAplctVO.setEduAplctOrdList(Arrays.asList(vEEduAplctVO.getChk().split(","))); + List vEEduAplctVOList = vEEduMIXService.selectExprnRsltFileDownList(vEEduAplctVO); + vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList); + //첨부파일있는 항목만 재배치 + String orgnZipNm = "체험교실 결과보고.zip"; + String downloadType = "A"; + //첨부파일있는 항목만 재배치 + List atchFileIdList = new ArrayList(); + List fileNmList = new ArrayList(); + vEEduAplctVOList.forEach( vo -> { + if(vo.getOrgnlRsltAtchFileId() != null) { + atchFileIdList.add(vo.getOrgnlRsltAtchFileId()); + fileNmList.add(vo.getScholInsttNm()+"_"+vo.getChrgNm()+"_원본"); + } + if(vo.getCpyRsltAtchFileId() != null) { + atchFileIdList.add(vo.getCpyRsltAtchFileId()); + fileNmList.add(vo.getScholInsttNm()+"_"+vo.getChrgNm()+"_사본"); + } + if(vo.getEvdncPhtAtchFileId() != null) { + atchFileIdList.add(vo.getEvdncPhtAtchFileId()); + fileNmList.add(vo.getScholInsttNm()+"_"+vo.getChrgNm()+"_증빙"); + } + if(vo.getRmtTrnAtchFileId() != null) { + atchFileIdList.add(vo.getRmtTrnAtchFileId()); + fileNmList.add(vo.getScholInsttNm()+"_"+vo.getChrgNm()+"_이수증"); + } + }); + + 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 fileNmIterator = fileNmList.iterator(); + + while (fvoIterator.hasNext() && fileNmIterator.hasNext() ){ + FileVO vo = fvoIterator.next(); + String fileNm = fileNmIterator.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 = fileNm + "."+ 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(); + } + } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // diff --git a/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml index c7b447f2..1e699887 100644 --- a/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml @@ -8827,4 +8827,26 @@ VALUES #rsltList[]# ORDER BY b.EDU_HOPE_DT ASC, B.STRT_TM ASC; + + diff --git a/src/main/webapp/WEB-INF/jsp/cmm/fms/selectForNmChgFile.jsp b/src/main/webapp/WEB-INF/jsp/cmm/fms/selectForNmChgFile.jsp index da384f16..26f4ab0a 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/fms/selectForNmChgFile.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/fms/selectForNmChgFile.jsp @@ -84,9 +84,17 @@ ','')" class="file_download_a" title="다운로드" style="display:inline-block;"> - - - () + + + + + + + + + + () +
diff --git a/src/main/webapp/WEB-INF/jsp/cmm/fms/selectRsltRprtFileWithDelete.jsp b/src/main/webapp/WEB-INF/jsp/cmm/fms/selectRsltRprtFileWithDelete.jsp index 7faa38b6..21297aa0 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/fms/selectRsltRprtFileWithDelete.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/fms/selectRsltRprtFileWithDelete.jsp @@ -27,8 +27,9 @@ 교육과정관리 @@ -311,7 +347,8 @@ - + + diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp index 5390634d..c50df376 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp @@ -1332,7 +1332,7 @@
- +