From a452a9a32aa9166cad510a70fdbb99008e09b767 Mon Sep 17 00:00:00 2001 From: myname Date: Thu, 22 Dec 2022 17:15:16 +0900 Subject: [PATCH] =?UTF-8?q?2022-12-22=2017:14=20=EC=9E=AC=20=EB=8B=A8?= =?UTF-8?q?=EA=B6=8C=ED=99=94=20,=20=EB=8B=A8=EA=B6=8C=ED=99=94=20?= =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A5=B4=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kcc/com/cmm/web/StreamDocsController.java | 37 ++- .../kccadr/advc/service/AdrHstryMgrVO.java | 8 + .../kcc/kccadr/cmm/KccadrPdfConversion.java | 238 +++++++++++++++++- .../kccadr/ozSchd/web/OzSchdExportUtil.java | 4 +- .../kccadr/advc/AdrHstryMgr_SQL_Cubrid.xml | 11 +- 5 files changed, 274 insertions(+), 24 deletions(-) diff --git a/src/main/java/kcc/com/cmm/web/StreamDocsController.java b/src/main/java/kcc/com/cmm/web/StreamDocsController.java index 4a115a5a..516d43c4 100644 --- a/src/main/java/kcc/com/cmm/web/StreamDocsController.java +++ b/src/main/java/kcc/com/cmm/web/StreamDocsController.java @@ -24,9 +24,11 @@ import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.InnorixFileService; import kcc.com.cmm.util.StreamDocsUtil; import kcc.com.utl.fcc.service.EgovStringUtil; +import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService; import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService; import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmVO; import kcc.kccadr.adjst.service.AdjstReqService; +import kcc.kccadr.advc.service.AdrHstryMgrService; import kcc.kccadr.cmm.KccadrPdfConversion; import kcc.kccadr.cmm.RestResponse; import kcc.kccadr.cmm.service.PdfConversionService; @@ -57,6 +59,9 @@ public class StreamDocsController { @Resource(name="PdfConversionService") private PdfConversionService pdfConversionService; + @Resource(name="adrHstryMgrService") + private AdrHstryMgrService adrHstryMgrService; + /** EgovPropertyService */ @Resource(name = "InnorixFileService") protected InnorixFileService innorixService; @@ -76,6 +81,12 @@ public class StreamDocsController { @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; + @Resource(name="adjstReqStatusService") + private AdjstReqStatusService adjstReqStatusService; + + //암복호화 유틸 + @Resource(name = "EgovFileMngService") + EgovFileMngService egovFileMngService; private static String pdfMakepathOut; //c:/usr/local/tomcat/file/sht/out @Value("#{globalSettings['Globals.pdf.makepath.out']}") @@ -131,14 +142,12 @@ public class StreamDocsController { */ @RequestMapping(value = {"/kccadr/common/regStreamDocsAjax.do"}, method = RequestMethod.POST) public ResponseEntity regStreamDocsAjax(@RequestBody PdfConversionVO pdfConversionVO) throws Exception { - - - PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO); - + //PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO); try { // make 파일 경로 - String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf"; + //String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf"; + String filePath = pdfMakepathOut + pdfConversionVO.getAdrSeq() +"/result/bookmark.pdf"; // pdf 파일 등록 HttpResponse responseInfo = StreamDocsUtil.regPdfDoc(filePath, streamdocsURL); @@ -150,7 +159,7 @@ public class StreamDocsController { } // 실패 시 return value - return ResponseEntity.ok(new RestResponse(HttpStatus.BAD_REQUEST, "pdf 로드에 실패하였습니다.", LocalDateTime.now())); + return ResponseEntity.ok(new RestResponse(HttpStatus.BAD_REQUEST, "pdf 로드에 실패하였습니다.\n단권화 파일이 없습니다.", LocalDateTime.now())); } /** @@ -235,10 +244,20 @@ public class StreamDocsController { public ResponseEntity remakeStreamDocPdfAjax( @RequestBody PdfConversionVO pdfConversionVO ) throws Exception { - - KccadrPdfConversion kpc = new KccadrPdfConversion(); - kpc.newPdfConversionPrcs(pdfConversionVO.getAdrSeq()); + try { + KccadrPdfConversion kpc = new KccadrPdfConversion(); + String s_result = kpc.newPdfConversionPrcs( + pdfConversionVO.getAdrSeq() + , adjstReqStatusService + , egovFileMngService + , pdfConversionService + , adrHstryMgrService + ); + }catch(Exception ex) { + return ResponseEntity.ok(new RestResponse(HttpStatus.EXPECTATION_FAILED, "생성 중 오류가 발생하였습니다.", LocalDateTime.now())); + } + return ResponseEntity.ok(new RestResponse(HttpStatus.OK, "등록 되었습니다.", LocalDateTime.now())); } diff --git a/src/main/java/kcc/kccadr/advc/service/AdrHstryMgrVO.java b/src/main/java/kcc/kccadr/advc/service/AdrHstryMgrVO.java index 511c47c3..518c91f8 100644 --- a/src/main/java/kcc/kccadr/advc/service/AdrHstryMgrVO.java +++ b/src/main/java/kcc/kccadr/advc/service/AdrHstryMgrVO.java @@ -55,6 +55,8 @@ public class AdrHstryMgrVO extends ComDefaultVO implements Serializable { private String userNm; + private String isRemake; //재단권화 쿼리 필터 여부 - Y + public String getAdrSeq() { return adrSeq; } @@ -217,5 +219,11 @@ public class AdrHstryMgrVO extends ComDefaultVO implements Serializable { } public void setUserNm(String userNm) { this.userNm = userNm; + } + public String getIsRemake() { + return isRemake; + } + public void setIsRemake(String isRemake) { + this.isRemake = isRemake; } } diff --git a/src/main/java/kcc/kccadr/cmm/KccadrPdfConversion.java b/src/main/java/kcc/kccadr/cmm/KccadrPdfConversion.java index 2e26a907..ddd5fa7d 100644 --- a/src/main/java/kcc/kccadr/cmm/KccadrPdfConversion.java +++ b/src/main/java/kcc/kccadr/cmm/KccadrPdfConversion.java @@ -34,6 +34,8 @@ import kcc.com.cmm.service.FileVO; import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService; import kcc.kccadr.accdnt.ars.service.AdjstReqStatusVO; import kcc.kccadr.adjst.service.AdjstReqService; +import kcc.kccadr.advc.service.AdrHstryMgrService; +import kcc.kccadr.advc.service.AdrHstryMgrVO; import kcc.kccadr.cmm.service.PdfConversionService; import kcc.kccadr.cmm.service.PdfConversionVO; import kcc.let.utl.fcc.service.EgovCryptoUtil; @@ -63,6 +65,10 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { @Resource(name="PdfConversionService") private PdfConversionService pdfConversionService; + @Resource(name="adrHstryMgrService") + private AdrHstryMgrService adrHstryMgrService; + + //pdf 변환 서버 관련 설정 private static String pdfServerUrl; //192.168.0.200 @Value("#{globalSettings['Globals.pdf.serverUrl']}") @@ -148,10 +154,12 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { //2. (adr_pdf_batch)테이블의 is_pdf_tran이 'N'이고 pdf_tran_cnt이 5 이하인 조정사건의 adrseq select limit 5 -> PdfConversionVO pdfConversionVOList = pdfConversionService.selectConversionPdfList(); - + } catch (Exception e) { System.out.println(e.getMessage()); } + + //3. for문을 통해 pdf 변환 int cnt = 1; @@ -164,8 +172,18 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { //update service 호출 pdfConversionService.updateIsProcessing(tmpUpdateVO); - String result = pdfTranCall(tmpPdfConversionVO.getAdrSeq()); - + //old batch 스케쥴러 + //String result = pdfTranCall(tmpPdfConversionVO.getAdrSeq()); + + //고도화 배치 스케쥴러 + String result = this.newPdfConversionPrcs( + tmpPdfConversionVO.getAdrSeq() + , adjstReqStatusService + , egovFileMngService + , pdfConversionService + , adrHstryMgrService + ); + if("success".equals(result)) { System.out.println("Success!!!"); } else if("tranFail".equals(result)) { @@ -204,15 +222,29 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { } } - public void newPdfConversionPrcs( + public String newPdfConversionPrcs( String p_adrSeq - ) { + , AdjstReqStatusService p_adjstReqStatusService + , EgovFileMngService p_egovFileMngService + , PdfConversionService p_pdfConversionService + , AdrHstryMgrService p_adrHstryMgrService + ) { + String s_ret = ""; + try { - this.newPdfTranCall(p_adrSeq); + s_ret = this.newPdfTranCall( + p_adrSeq + , p_adjstReqStatusService + , p_egovFileMngService + , p_pdfConversionService + , p_adrHstryMgrService + ); } catch (Exception e) { System.out.println(e.getMessage()); } + + return s_ret; } @SuppressWarnings("unused") @@ -862,7 +894,13 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { * @throws ParseException * @throws InterruptedException */ - private String newPdfTranCall(String adrSeq) + private String newPdfTranCall( + String p_adrSeq + , AdjstReqStatusService p_adjstReqStatusService + , EgovFileMngService p_egovFileMngService + , PdfConversionService p_pdfConversionService + , AdrHstryMgrService p_adrHstryMgrService + ) throws UnirestException, ParseException, InterruptedException { boolean isSuccess = false; // 전체 성공여부 @@ -875,14 +913,15 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { String pdfGatewayStatusUrl = "http://" + pdfServerUrl + ":8888/pdf-gateway/api/task/status"; // Pdf Gateway 상태 URL /*String bookmarkUri = "file:/c:/Temp/Result/Last/pdf200_Bookmark.pdf"; // 북마크 후 파일명 */ - String conversionBeforeUri = pdfMakepathOut + adrSeq + "/conversionbefore/"; //pdf 변환 작업 전 파일경로 - String ozfileUri = pdfMakepathOut + adrSeq + "/ozFile/"; // oz파일 export uri + String conversionBeforeUri = pdfMakepathOut + p_adrSeq + "/conversionbefore/"; //pdf 변환 작업 전 파일경로 + String ozfileUri = pdfMakepathOut + p_adrSeq + "/ozFile/"; // oz파일 export uri - String conversionPdfUri = pdfFilepathOut + adrSeq + "/conversionafter/"; // pdf 변환 작업 후 파일경로 - String bookmarkUri = pdfFilepathOut + adrSeq +"/result/bookmark.pdf"; // 북마크 후 파일명 + String conversionPdfUri = pdfFilepathOut + p_adrSeq + "/conversionafter/"; // pdf 변환 작업 후 파일경로 + String bookmarkUri = pdfFilepathOut + p_adrSeq +"/result/bookmark.pdf"; // 북마크 후 파일명 int conversionNo = 0; //pdf 변환 파일명 순번 + System.out.println("====newPdfTranCall===="); System.out.println(""); System.out.println("pdfGatewayBuildUrl"); @@ -909,7 +948,15 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { System.out.println(bookmarkUri); + //step1.이력 테이블에서 해당 조정의 진행 정보를 가져온다. + AdrHstryMgrVO adrHstryMgrVO = new AdrHstryMgrVO(); + adrHstryMgrVO.setAdrSeq(p_adrSeq); + adrHstryMgrVO.setIsRemake("Y"); //remake 대상만 가져오기 + + List adrHstryMgrVOList = p_adrHstryMgrService.selectList(adrHstryMgrVO); + + //step2. //오즈리포트 export된 파일 -> conversionbefore폴더로 이동 File ozFile = new File(ozfileUri); //폴더가 없다면 생성 @@ -923,6 +970,13 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { destFile.mkdirs(); } + + //step3.진행된 oz pdf 변환 파일을 배열에 넣는다. + // 1. 변환할 문서 불러오기 + List> mapList = new ArrayList>(); + Map map = new HashMap(); + + if(ozFileList.length > 0) { for(File tmpFile : ozFileList) { conversionNo++; //변환 후 파일명 순번 @@ -933,17 +987,175 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl { String fileExt = fileNm.substring(fileNm.lastIndexOf(".")); File toDestFile = new File(conversionBeforeUri + conversionNo + fileExt); - FileUtils.copyFile(fromFile, toDestFile); - //System.out.println(); + //해당 파일이 대상 파일인지 이력 테이블 정보로 확인 한다. + String s_isUse = "N"; + + //실제 처리된 파일만 작업한다. + if (fileNm.indexOf("A250")>-1) { + s_isUse = "Y"; + }else { + for(AdrHstryMgrVO f_adrHstryMgrVO : adrHstryMgrVOList) { + if (fileNm.indexOf(f_adrHstryMgrVO.getMenuId())>-1) { + s_isUse = "Y"; + System.out.println("2.conversionBeforeUri + conversionNo + fileExt"); + System.out.println(conversionBeforeUri + fileNm); + break; + } + } + } + + + //대상 파일이 맞으면 진행상황에 맞는 북마크 이름을 매칭하고, 배열에 저장한다. + if ("Y".equals(s_isUse)) { + + String s_bookmakrNm = fileNm.substring(0, tmpFile.getName().lastIndexOf(".")); + + switch(s_bookmakrNm) { + case"201050": + s_bookmakrNm="조정신청서"; + break; + + case"205050": + s_bookmakrNm="기일통지서"; + break; + + case"302050": + s_bookmakrNm="기일조서"; + break; + + case"304050": + s_bookmakrNm="조정조서"; + break; + + case"307050": + s_bookmakrNm="불성립 종결 통보서"; + break; + + case"306050": + s_bookmakrNm="직권조정결정서"; + break; + + case"A500": + s_bookmakrNm="확정증명원"; + break; + + case"305050": + s_bookmakrNm="취하종결통보서"; + break; + + case"303050": + s_bookmakrNm="조정권고안"; + break; + + case"A250": + s_bookmakrNm="경정신청서"; + break; + } + + map = new HashMap(); + map.put("INURI", pdfFilepathOut + p_adrSeq + "/conversionbefore/" + conversionNo + fileExt); // 변환대상 파일 + map.put("OUTURI", conversionPdfUri+"conversionAfter_"+ Integer.toString(conversionNo) + ".pdf"); // 변환후 파일 + map.put("ISWEB", "0"); // 웹문서 여부 + map.put("ISEXIST", "0"); // 기존 PDF파일 존재 여부 => 기존파일일경우 INURI, OUTURI 동일 + map.put("BOOKMARKNAME", s_bookmakrNm); // 북마크에 삽입될 실제 파일명 + mapList.add(map); + } } } + + //step4.첨부파일을 추가로 배열에 넣는다. + AdjstReqStatusVO adjstReqStatusVO = new AdjstReqStatusVO(); + adjstReqStatusVO.setAdrSeq(p_adrSeq); + /*adjstReqStatusVO.setAdrSeq("ADR_0000000000002440");*/ + List adrFileList = p_adjstReqStatusService.selectAdjstDocs20211020List(adjstReqStatusVO); +// /usr/local/tomcat/file/sht/ +// if(true) { +// return "breakpoint"; +// } + + for(AdjstReqStatusVO tmpAdjstReqStatusVO : adrFileList) { + if(!"0".equals(tmpAdjstReqStatusVO.getAdrDocCn2())) { + conversionNo++; //변환 후 파일명 순번 + + //step1.파일위치 변경 + //sht => out/adrseq + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(tmpAdjstReqStatusVO.getAtchFileId()); + fileVO.setFileSn(tmpAdjstReqStatusVO.getFileSn()); + + FileVO nfile = p_egovFileMngService.selectFileInf(fileVO); + + //step1.copy and rename + String s_src_file_name = nfile.streFileNm; + String oriFileName = nfile.orignlFileNm; + String fileExt = nfile.fileExtsn; + //pdf 변환솔루션에서 변환가능 확장자 + //pdf, ppt, pptx, xls, xlsx, doc, docx, docm, dotx, txt, hwp, hwpx, jpg, jpe, jpeg, gif, png, bmp + String possibleExt = "PDF,PPT,PPTX,XLS,XLSX,DOC,DOCX,DOCM,DOTX,TXT,HWP,HWPX,JPG,JPE,JPEG,GIF,PNG,BMP"; + + if(possibleExt.contains(fileExt.toUpperCase())) + { + File tmpSrcFile = new File(pdfMakepath + s_src_file_name); + File tmpDestFile = new File(conversionBeforeUri + conversionNo + "." + fileExt); + FileUtils.copyFile(tmpSrcFile, tmpDestFile); + + map = new HashMap(); + map.put("INURI", pdfFilepathOut + p_adrSeq + "/conversionbefore/" + conversionNo + "." + fileExt); // 변환대상 파일 + map.put("OUTURI", conversionPdfUri+"conversionAfter_"+ Integer.toString(conversionNo) + ".pdf"); // 변환후 파일 + map.put("ISWEB", "0"); // 웹문서 여부 + map.put("ISEXIST", "0"); // 기존 PDF파일 존재 여부 => 기존파일일경우 INURI, OUTURI 동일 + map.put("BOOKMARKNAME", oriFileName); // 북마크에 삽입될 실제 파일명 + mapList.add(map); + } + } + } + + + //대상 파일 내용 확인 + for(Map tmpMap : mapList) { + System.out.println("INURI : "+tmpMap.get("INURI")); + System.out.println("OUTURI : "+tmpMap.get("OUTURI")); + } + + //step5. + // 2. Pdf 문서변환 Start + isSuccess = pdfTranStart(mapList, pdfGatewayBuildUrl, pdfGatewayStatusUrl, bookmarkUri, p_adrSeq); + if (isSuccess == true) { + // 성공 + // 1. DB 처리 + // Update + // IsPdfTran = Y; (N: 미변환, Y: 변환완료) + + // Update + // atch_file_path(최종생성파일 저장) => bookmarkUri + + //adrSeq + /result/ + //bookmark.pdf + PdfConversionVO tmpPdfConversionVO = new PdfConversionVO(); + tmpPdfConversionVO.setAdrSeq(p_adrSeq); + tmpPdfConversionVO.setAtchFilePath(pdfMakepath + p_adrSeq + "/result/bookmark.pdf"); + tmpPdfConversionVO.setIsPdfTran("Y"); + + p_pdfConversionService.updatePdfConversionSuccess(tmpPdfConversionVO); + + result = "success"; + } + else { + // 실패 + // 1. DB 처리 + // Update + // IsPdfTran = 0; (0: 미변환, 1: 변환완료) + // PdfTranCnt = PdfTranCnt + 1; (배치시도 횟수) + result = "tranFail"; + } } catch (Exception ex) { + ex.printStackTrace(); System.out.println(ex.getMessage()); result = "exceptionFail"; } diff --git a/src/main/java/kcc/kccadr/ozSchd/web/OzSchdExportUtil.java b/src/main/java/kcc/kccadr/ozSchd/web/OzSchdExportUtil.java index 21b97af6..ddba5751 100644 --- a/src/main/java/kcc/kccadr/ozSchd/web/OzSchdExportUtil.java +++ b/src/main/java/kcc/kccadr/ozSchd/web/OzSchdExportUtil.java @@ -195,7 +195,9 @@ public class OzSchdExportUtil { if(p_devServerCheckString.indexOf(p_serverNm)>-1) { System.out.println(p_islocal + "환경입니다.-inner"); //저장파일 경로 - dev 서버의 경우는 oz report가linux 서버에서 작동되어 하기와 같이 경로 설정해야함(IP 불필요) - savePath = p_ozDevPath + "/" + p_adrSeq + "/" + p_savePdfFileName; + savePath = p_ozDevPath + "/" + p_adrSeq + "/ozFile/" + p_savePdfFileName; + //savePath = p_ozDevPath + "\\" + p_adrSeq + "\\" + p_savePdfFileName; + //savePath = p_ozDevPath + "/" + p_savePdfFileName; //oz scheduler 개발서버 p_ozSchedulerServerIp = p_devOzSchedulerServerIp; diff --git a/src/main/resources/egovframework/sqlmap/kccadr/advc/AdrHstryMgr_SQL_Cubrid.xml b/src/main/resources/egovframework/sqlmap/kccadr/advc/AdrHstryMgr_SQL_Cubrid.xml index ec16883a..aead8fd9 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/advc/AdrHstryMgr_SQL_Cubrid.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/advc/AdrHstryMgr_SQL_Cubrid.xml @@ -140,8 +140,17 @@ AND a.adr_hstry_mgr_seq = #adrHstryMgrSeq# - + + + + + + (LENGTH(a.menu_id)=6 + OR a.menu_id='A500' + ) + + ORDER BY a.frst_regist_pnttm