From a5736827003027c42291148e4015c799210dce22 Mon Sep 17 00:00:00 2001 From: hylee Date: Mon, 12 Dec 2022 12:31:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=EB=8B=A8=EA=B6=8C=ED=99=94=20p?= =?UTF-8?q?df=20=EC=86=94=EB=A3=A8=EC=85=98=20=EC=97=B0=EB=8F=99=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 47 +++++++-- .../java/kcc/com/cmm/util/StreamDocsUtil.java | 25 +++++ .../com/cmm/web/InnorixFileController.java | 2 - .../kcc/com/cmm/web/StreamDocsController.java | 99 +++++++++++++++++++ .../ars/web/AdjstReqStatusPdfController.java | 84 +--------------- .../java/kcc/kccadr/cmm/RestResponse.java | 14 +-- .../kcc/kccadr/message/SchedulerUtil.java | 4 +- .../egovProps/globals_dev.properties | 3 + .../egovProps/globals_local.properties | 3 + .../egovProps/globals_svr.properties | 3 + .../jsp/kccadr/adjPgrMgr/apm/apmTab1.jsp | 63 ++++++++++-- .../webapp/js/kccadr/adjReqMgrPast/init.js | 43 +++++--- .../webapp/js/kccadr/adjReqMgrPast/value.js | 7 +- 13 files changed, 269 insertions(+), 128 deletions(-) create mode 100644 src/main/java/kcc/com/cmm/util/StreamDocsUtil.java create mode 100644 src/main/java/kcc/com/cmm/web/StreamDocsController.java diff --git a/pom.xml b/pom.xml index bcecf078..1534646d 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,41 @@ + + + + + + + + + + org.apache.httpcomponents + httpclient + 4.5.3 + + + + + org.apache.solr + solr-solrj + 5.3.1 + + + + + org.apache.httpcomponents + httpcore + 4.4.6 + + + + + com.mashape.unirest + unirest-java + 1.4.9 + + egovframework.rte egovframework.rte.fdl.security @@ -465,19 +500,13 @@ 4.1.0.Final - + org.apache.httpcomponents - httpclient - 4.3.1 + httpmime + 4.5.3 - - org.apache.solr - solr-solrj - 5.3.1 - - net.coobird diff --git a/src/main/java/kcc/com/cmm/util/StreamDocsUtil.java b/src/main/java/kcc/com/cmm/util/StreamDocsUtil.java new file mode 100644 index 00000000..e0c44909 --- /dev/null +++ b/src/main/java/kcc/com/cmm/util/StreamDocsUtil.java @@ -0,0 +1,25 @@ +package kcc.com.cmm.util; + +import java.io.File; + +import com.mashape.unirest.http.HttpResponse; +import com.mashape.unirest.http.Unirest; +import com.mashape.unirest.http.exceptions.UnirestException; +import java.net.URL; + + +public class StreamDocsUtil { + + + public static HttpResponse regPdfDoc(String filePath, String requestUrl) throws UnirestException { + + HttpResponse response=Unirest.post(requestUrl) + .field("pdf", new File(filePath)) + .asString(); +// System.out.println(response.getStatus()); +// System.out.println(response.getBody()); + + return response; + } + +} diff --git a/src/main/java/kcc/com/cmm/web/InnorixFileController.java b/src/main/java/kcc/com/cmm/web/InnorixFileController.java index 6a11ce16..7c7bdd80 100644 --- a/src/main/java/kcc/com/cmm/web/InnorixFileController.java +++ b/src/main/java/kcc/com/cmm/web/InnorixFileController.java @@ -47,8 +47,6 @@ public class InnorixFileController { @RequestMapping(value = {"/kccadr/common/insertInnorixFileAjax.do"}, method = RequestMethod.POST) public ResponseEntity insertInnorixFileAjax(@RequestBody AdrInnorixFileVO adrInnorixFileVO) throws Exception { - logger.info(" ++ adrSeq :: [{}], adrDocTy :: [{}], frstRegistPnttm :: [{}] ", adrInnorixFileVO.getAdrSeq(), adrInnorixFileVO.getAdrDocTy(), adrInnorixFileVO.getFrstRegistPnttm()); - //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId()); diff --git a/src/main/java/kcc/com/cmm/web/StreamDocsController.java b/src/main/java/kcc/com/cmm/web/StreamDocsController.java new file mode 100644 index 00000000..92405905 --- /dev/null +++ b/src/main/java/kcc/com/cmm/web/StreamDocsController.java @@ -0,0 +1,99 @@ +package kcc.com.cmm.web; + +import java.time.LocalDateTime; + +import javax.annotation.Resource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.mashape.unirest.http.HttpResponse; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.AdrInnorixFileVO; +import kcc.com.cmm.service.InnorixFileService; +import kcc.com.cmm.util.StreamDocsUtil; +import kcc.com.utl.fcc.service.EgovStringUtil; +import kcc.kccadr.accdnt.ans.service.AnsVO; +import kcc.kccadr.cmm.RestResponse; +import kcc.kccadr.cmm.service.PdfConversionService; +import kcc.kccadr.cmm.service.PdfConversionVO; + +/** + * + * @author : 이호영 + * @fileName : InnorixFileController.java + * @date : 2022.11.01 + * @description : innorix 대용량 파일 업로드 솔루션 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2022.11.01 이호영 최초 생성 + * + * + * + */ +@Controller +public class StreamDocsController { + + private static final Logger log = LoggerFactory.getLogger(StreamDocsController.class); + + //pdf 변환 service + @Resource(name="PdfConversionService") + private PdfConversionService pdfConversionService; + + /** EgovPropertyService */ + @Resource(name = "InnorixFileService") + protected InnorixFileService innorixService; + + private static String pdfMakepathOut; //c:/usr/local/tomcat/file/sht/out + @Value("#{globalSettings['Globals.pdf.makepath.out']}") + public void setPdfMakepathOut(String path) { pdfMakepathOut = path; } + + + @Value("#{globalSettings['Globals.Streamdocs.Url']}") + public String streamdocsURL; + + /** + * @methodName : regStreamDocsAjax + * @author : 이호영 + * @date : 2022.12.12 + * @description : StreamDocs에 파일 등록 하는 controller + * @param pdfConversionVO + * @return + * @throws Exception + */ + @RequestMapping(value = {"/kccadr/common/regStreamDocsAjax.do"}, method = RequestMethod.POST) + public ResponseEntity regStreamDocsAjax(@RequestBody PdfConversionVO pdfConversionVO) throws Exception { + + + PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO); + + + try { + // make 파일 경로 + String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf"; + + // pdf 파일 등록 + HttpResponse responseInfo = StreamDocsUtil.regPdfDoc(filePath, streamdocsURL); + + // 성공 시 return value + return ResponseEntity.ok(new RestResponse(HttpStatus.OK, "등록 되었습니다.", responseInfo.getBody(), LocalDateTime.now())); + } catch (Exception e) { + e.printStackTrace(); + } + + // 실패 시 return value + return ResponseEntity.ok(new RestResponse(HttpStatus.BAD_REQUEST, "pdf 로드에 실패하였습니다.", LocalDateTime.now())); + } + + +} \ No newline at end of file diff --git a/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusPdfController.java b/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusPdfController.java index 477ade00..d4a03157 100644 --- a/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusPdfController.java +++ b/src/main/java/kcc/kccadr/accdnt/ars/web/AdjstReqStatusPdfController.java @@ -37,8 +37,10 @@ import com.epapyrus.pdf.pg.entity.TextWatermark; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; + import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.util.StreamDocsUtil; import kcc.kccadr.accdnt.ai.service.AdjstIncidentService; import kcc.kccadr.accdnt.ai.service.AdjstIncidentVO; import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService; @@ -1251,89 +1253,7 @@ public class AdjstReqStatusPdfController { return modelAndView; } - - /** - * 종결사건 단권화 파일 다운르도 - */ - @RequestMapping(value = "/kccadr/adjPgrMgr/apm/regStreamDocsAPI.do") - public ModelAndView regStreamDocsAPI(PdfConversionVO pdfConversionVO) { - - ModelAndView modelAndView = new ModelAndView("jsonView"); -// String accessToken = "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..wPlmcQ9_3F7DIUi--a5CYg.svTX0D57aaST4tDmDAmd4jXk_sAac491b51VLn49OJwT5__ytx_T4Z1Jt3qX-HY1sQS3xqaBqt9JmTyyKXSCDrai4dNnirNRHj-_tu2loFZiPNEm7oXaH50eZkU_uJQOVwvN1Zxct_MotJOOwoAI1xEIBiMCA3CjFFgbW3PEIZnCmp-Tjv1TJuVumBOgfQgCwzcNYr30EMKg6Go7ECsxkBxldFy52a7YGzMkdj6_qv0.Ez6gSV4sNmBnW1gx7U8TKw"; - //alert 메세지 - //결과 flag - - try { - PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO); - /* - String request = "http://192.168.0.176:8085/streamdocs/v4/auth"; - String queryParam = "?id=admin&password=streamdocs-admin"; - String apiURL = request + queryParam; - - HttpResponse response = Unirest.post(apiURL) - .asString(); - - System.out.println("응답코드 : " + response.getStatus()); - System.out.println("response : " + response.getBody()); - */ - - try { - - File uFile = new File(pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/", "bookmark.pdf"); - - String requestUrl="http://192.168.0.176:8085/streamdocs/v4/documents"; - HttpResponse response=Unirest.post(requestUrl) - .field("pdf", pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/", "bookmark.pdf") - .field("name","sample.pdf") - .field("docName","singleDocsample.pdf") - .field("lifespan","1M") - .field("category","singleDocTest") - .field("description","singleDocSample") - .field("password","1234") - .field("save",false) - .asString(); - - /* - String requestUrl="http://192.168.0.176:8085/streamdocs/v4/documents/external-resources"; - String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf"; - HttpResponse response = Unirest.post(requestUrl) - .header("Content-Type", "application/json") - .body("{\"externalResource\":\"file:/"+filePath+"\"}") - .asString(); - System.out.println("filePath : "+ filePath); - -*/ - - System.out.println("!!!!!"); - System.out.println(response.getStatus()); - System.out.println(response.getBody()); - - - } catch (Exception e) { - System.out.println("Exception "); - e.printStackTrace(); - // TODO: handle exception - } - - - modelAndView.addObject("result", "success"); -// modelAndView.addObject("data", response); - modelAndView.addObject("message", "성공"); - - }catch (Exception e) { - e.printStackTrace(); - System.out.println(e.getMessage()); - modelAndView.addObject("result", "fail"); - modelAndView.addObject("message", "요청에 실패하였습니다."); - } - - return modelAndView; - } - - - - /** * Disposition 지정하기. * diff --git a/src/main/java/kcc/kccadr/cmm/RestResponse.java b/src/main/java/kcc/kccadr/cmm/RestResponse.java index 2685efae..dff497ff 100644 --- a/src/main/java/kcc/kccadr/cmm/RestResponse.java +++ b/src/main/java/kcc/kccadr/cmm/RestResponse.java @@ -5,6 +5,8 @@ import java.util.List; import org.springframework.http.HttpStatus; +import com.mashape.unirest.http.HttpResponse; + /** * @@ -46,7 +48,7 @@ public class RestResponse { private LocalDateTime timestamp; private List dataList; - + public RestResponse(HttpStatus status, String data, LocalDateTime timestamp) { this.status = status; this.data = data; @@ -112,14 +114,6 @@ public class RestResponse { public void setDataSub(String dataSub) { this.dataSub = dataSub; } - - - - - - - - - + } diff --git a/src/main/java/kcc/kccadr/message/SchedulerUtil.java b/src/main/java/kcc/kccadr/message/SchedulerUtil.java index f6b56b37..1c41c9bc 100644 --- a/src/main/java/kcc/kccadr/message/SchedulerUtil.java +++ b/src/main/java/kcc/kccadr/message/SchedulerUtil.java @@ -44,7 +44,7 @@ public class SchedulerUtil { @Resource (name = "KakaoAtSendService") private KakaoAtSendService kakaoAtSendService; - private static final String ONE_MIN = "PT1M"; // 1분동안 LOCK + private static final String TWO_MIN = "PT2M"; // 2분동안 LOCK //로컬 테스트용 아이피 허용 private String myLocalIp = "192.168.0.40"; @@ -63,7 +63,7 @@ public class SchedulerUtil { //10분마다 실행 @Scheduled(cron = "0 0/2 * * * *") - @SchedulerLock(name = "kakaoAtSendPrcs", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) + @SchedulerLock(name = "kakaoAtSendPrcs", lockAtMostForString = TWO_MIN, lockAtLeastForString = TWO_MIN) public void kakaoAtSendPrcs() throws Exception { System.out.println("===========at scheduler run============"); log.error("===========at scheduler run============"); diff --git a/src/main/resources/egovframework/egovProps/globals_dev.properties b/src/main/resources/egovframework/egovProps/globals_dev.properties index 2e2007d0..1b3f55e0 100644 --- a/src/main/resources/egovframework/egovProps/globals_dev.properties +++ b/src/main/resources/egovframework/egovProps/globals_dev.properties @@ -204,6 +204,9 @@ Globals.Naver.callbackUrl=http://119.193.215.98:8081/web/kccadr/certDoc/snsCallB #[\uce74\uce74\uc624]Sns \uc778\uc99d \uac12 Globals.Kakao.Key=5c0404a0840eb8821a0fdf6b3f2659b4 +#Streamdocs \ub4f1\ub85d URL +Globals.Streamdocs.Url=http://192.168.0.176:8085/streamdocs/v4/documents + # \uce74\uce74\uc624\uc54c\ub9bc\ud1a1(\ube44\uc988\ubfcc\ub9ac\uc624) API URL #\uac1c\ubc1c\uc11c\ubc84 #Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com diff --git a/src/main/resources/egovframework/egovProps/globals_local.properties b/src/main/resources/egovframework/egovProps/globals_local.properties index 3a3ae148..35cabbfc 100644 --- a/src/main/resources/egovframework/egovProps/globals_local.properties +++ b/src/main/resources/egovframework/egovProps/globals_local.properties @@ -203,6 +203,9 @@ Globals.Naver.callbackUrl=http://127.0.0.1:8090/web/kccadr/certDoc/snsCallBack.d #[\uce74\uce74\uc624]Sns \uc778\uc99d \uac12 Globals.Kakao.Key=bf3de0d897afe0e4bef0775f7086f048 +#Streamdocs \ub4f1\ub85d URL +Globals.Streamdocs.Url=http://192.168.0.176:8085/streamdocs/v4/documents + # \uce74\uce74\uc624\uc54c\ub9bc\ud1a1(\ube44\uc988\ubfcc\ub9ac\uc624) API URL #\uac1c\ubc1c\uc11c\ubc84 Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com diff --git a/src/main/resources/egovframework/egovProps/globals_svr.properties b/src/main/resources/egovframework/egovProps/globals_svr.properties index 1be68277..e85355fa 100644 --- a/src/main/resources/egovframework/egovProps/globals_svr.properties +++ b/src/main/resources/egovframework/egovProps/globals_svr.properties @@ -193,6 +193,9 @@ Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/payment/inipay #DB \uc554\ud638\ud654 \uc194\ub8e8\uc158 \uc815\ucc45\uba85 Globals.MagicDB.PolicyName=POLICY001 +#Streamdocs \ub4f1\ub85d URL +Globals.Streamdocs.Url= + # \uce74\uce74\uc624\uc54c\ub9bc\ud1a1(\ube44\uc988\ubfcc\ub9ac\uc624) API URL #\uac1c\ubc1c\uc11c\ubc84 #Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/apmTab1.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/apmTab1.jsp index 9080a35b..50e8f4b7 100644 --- a/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/apmTab1.jsp +++ b/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/apmTab1.jsp @@ -105,7 +105,7 @@ error: function (e) {console.log("ERROR : ", e); } }); } - + /* // Pdf 뷰어솔루션 function fn_reg_streamDocs(){ var data = new FormData(document.getElementById("pop")); @@ -114,7 +114,8 @@ $.ajax({ type: "POST", - url: "/kccadr/adjPgrMgr/apm/regStreamDocsAPI.do", +// url: "/kccadr/adjPgrMgr/apm/regStreamDocsAPI.do", + url: "/kccadr/common/regStreamDocsAjax.do", data: data, dataType:'json', @@ -138,6 +139,56 @@ error: function (e) {console.log("ERROR : ", e); } }); } + + */ + + + + + /* + * Pdf 뷰어솔루션 + * */ + function fn_reg_streamDocs(){ + + + var data = { + "adrSeq": $('#adrSeq').val() + } + + console.log('data :: ', data); + + $.ajax({ + type: "POST", + url: "", + data: JSON.stringify(data), + dataType:'json', + async: false, + processData: false, + contentType: "application/json", + cache: false, + success: function (returnData) { + console.log('returnData : ', returnData); + if(returnData.status == "OK"){ + // text => JSON + var obj = JSON.parse(returnData.dataSub); + // window.open 호출 + fn_read_streamDocs(obj.alink); + }else{ + alert(returnData.data); + return false; + } + }, + error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); } + }); + + }; + + /* + * pdf Stream road + */ + function fn_read_streamDocs(url){ + window.open(url); + } function fnc_download_endFile(){ var adrSeq = document.pop.adrSeq.value; @@ -145,10 +196,6 @@ } - function fn_read_streamDocs(){ - var adrSeq = document.pop.adrSeq.value; - window.open("http://192.168.0.176:8085/streamdocs/view/sd;streamdocsId=-Q_zRU0tisIOGyXPQpUgZvES1CSm7zhp78sXUx_y11Q"); - } // function fn_viewPop(code) { @@ -354,8 +401,8 @@ <%-- --%> - - + +