From 00cc5e7a6c9c51fb1858facc8dd377f6ea7ea00e Mon Sep 17 00:00:00 2001 From: tolag3 Date: Wed, 20 Dec 2023 15:29:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=A4=80=ED=98=B8=20=EC=A0=84?= =?UTF-8?q?=EC=9E=90=EC=A1=B0=EC=A0=95=EC=8B=9C=EC=8A=A4=ED=85=9C=20?= =?UTF-8?q?=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ocr 개발 중 --- .../web/AdjReqMgrOffLineController.java | 16 + .../textsense/service/TextSenseService.java | 4 + .../kccadr/textsense/service/TextSenseVO.java | 17 + .../textsense/service/impl/TextSenseDAO.java | 13 + .../service/impl/TextSenseServiceImpl.java | 13 + .../textsense/web/TextSenseAPIComm.java | 19 +- .../textsense/web/TextSenseController.java | 131 +++++-- .../kccadr/textsense/TextSense_SQL_Mysql.xml | 26 ++ src/main/webapp/WEB-INF/decorators.xml | 2 +- .../adjReqMgrOff/adjReqMgrOffRegist.jsp | 1 + .../adjReqMgrOff/popup/adjReqMgrOffOcrPop.jsp | 368 ++++++++++++++++++ .../WEB-INF/jsp/uss/ion/fms/FmsFileModify.jsp | 86 ++-- 12 files changed, 604 insertions(+), 92 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/popup/adjReqMgrOffOcrPop.jsp diff --git a/src/main/java/kcc/kccadr/adjReqMgrOff/web/AdjReqMgrOffLineController.java b/src/main/java/kcc/kccadr/adjReqMgrOff/web/AdjReqMgrOffLineController.java index 9801dca4..e1dc9b9f 100644 --- a/src/main/java/kcc/kccadr/adjReqMgrOff/web/AdjReqMgrOffLineController.java +++ b/src/main/java/kcc/kccadr/adjReqMgrOff/web/AdjReqMgrOffLineController.java @@ -978,6 +978,22 @@ public class AdjReqMgrOffLineController { return modelAndView; } + + /* + * + * 조정신청 양식에 맞는 첨부파일을 + * OCR로 읽어온다 + * + * */ + @RequestMapping("/kccadr/adjReqMgOff/adjReqMgrOffOcrPopAjax.do") + public String adjReqMgrOffOcrPopAjax(@ModelAttribute("adjReqMgrOffLineVO") AdjReqMgrOffLineVO adjReqMgrOffLineVO, ModelMap model) throws Exception { + +// AdjReqMgrOffLineVO master = adjReqMgrOffLineService.selectAdjstReqMgrOffMasterInfo(adjReqMgrOffLineVO); +// model.addAttribute("master", master); + + return "kccadr/adjReqMgrOff/popup/adjReqMgrOffOcrPop"; + } + public void decryptInfomation(List list, AdjReqMgrOffLineVO info){ if(CollectionUtils.isNotEmpty(list)){ for(AdjReqMgrOffLineVO model : list){ diff --git a/src/main/java/kcc/kccadr/textsense/service/TextSenseService.java b/src/main/java/kcc/kccadr/textsense/service/TextSenseService.java index 80b162e4..8cc038ff 100644 --- a/src/main/java/kcc/kccadr/textsense/service/TextSenseService.java +++ b/src/main/java/kcc/kccadr/textsense/service/TextSenseService.java @@ -28,5 +28,9 @@ public interface TextSenseService { public void updateTextSenseModify(TextSenseVO textSenseVO) throws Exception; public void deleteTextSense(TextSenseVO textSenseVO) throws Exception; + + public void insertTextSenseModify(TextSenseVO textSenseVO) throws Exception; + + public TextSenseVO selectTextSenseModify(TextSenseVO textSenseVO) throws Exception; } \ No newline at end of file diff --git a/src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java b/src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java index a8c3a699..6f87714c 100644 --- a/src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java +++ b/src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java @@ -3,6 +3,7 @@ package kcc.kccadr.textsense.service; import java.io.Serializable; import kcc.com.cmm.ComDefaultVO; +import kcc.let.utl.fcc.service.EgovStringUtil; public class TextSenseVO extends ComDefaultVO implements Serializable{ @@ -48,6 +49,9 @@ public class TextSenseVO extends ComDefaultVO implements Serializable{ private String lastUpdusrId; private String lastUpdtPnttm; + private String excelYn; + + private String filePath; public String getApiUrl() { return apiUrl; @@ -241,5 +245,18 @@ public class TextSenseVO extends ComDefaultVO implements Serializable{ public void setLastUpdtPnttm(String lastUpdtPnttm) { this.lastUpdtPnttm = lastUpdtPnttm; } + public String getExcelYn() { + return excelYn; + } + public void setExcelYn(String excelYn) { + this.excelYn = excelYn; + } + public String getFilePath() { + return filePath; + } + public void setFilePath(String filePath) { + this.filePath = filePath; + } + } diff --git a/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseDAO.java b/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseDAO.java index cf16b59b..64b53550 100644 --- a/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseDAO.java +++ b/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseDAO.java @@ -131,4 +131,17 @@ public class TextSenseDAO extends EgovAbstractDAO{ } } + public void insertTextSenseModify(TextSenseVO textSenseVO) throws Exception{ + try { + + update("textSenseDAO.insertTextSenseModify", textSenseVO); + + } catch (Exception e) { + System.out.println("insertTextSenseModify Service DAO Error !!! " + e); + } + } + + public TextSenseVO selectTextSenseModify(TextSenseVO textSenseVO) throws Exception{ + return (TextSenseVO) select("textSenseDAO.selectTextSenseModify", textSenseVO); + } } diff --git a/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseServiceImpl.java b/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseServiceImpl.java index 40ef5d05..db2b0842 100644 --- a/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseServiceImpl.java +++ b/src/main/java/kcc/kccadr/textsense/service/impl/TextSenseServiceImpl.java @@ -150,5 +150,18 @@ public class TextSenseServiceImpl implements TextSenseService{ } } + @Override + public void insertTextSenseModify(TextSenseVO textSenseVO) throws Exception{ + try { + textSenseDAO.insertTextSenseModify(textSenseVO); + } catch (Exception e) { + System.out.println("insertTextSenseModify Service DAO Error !!! " + e); + } + } + + @Override + public TextSenseVO selectTextSenseModify(TextSenseVO textSenseVO) throws Exception{ + return textSenseDAO.selectTextSenseModify(textSenseVO); + } } diff --git a/src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java b/src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java index 0557fd3e..aa219194 100644 --- a/src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java +++ b/src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java @@ -26,13 +26,11 @@ public class TextSenseAPIComm { try { - String apiUrl = textSenseVO.getApiUrl(); //"http://222.231.43.29:7777/textsense/api/job/build"; - String inputUri = textSenseVO.getInputUri(); //"http://119.193.215.98:8081/kccadrPb/usr/image/common/top_logo.png"; - String outputUri = textSenseVO.getOutputUri(); //"ftp://woo:dkagh@119.193.215.98/usr/ePapyrus/testocr.json"; - //String outputUri = "http://119.193.215.98:8081/web/main/textsence/testOutputUriPage.do"; - String taskName = textSenseVO.getTaskName();//"textsense-test1"; - String callbackUri = textSenseVO.getCallbackUri();//"http://119.193.215.98:8081/web/main/textsence/testCallbackUriPage.do"; - //String extraJobs = ""; + String apiUrl = textSenseVO.getApiUrl(); + String inputUri = textSenseVO.getInputUri(); + String outputUri = textSenseVO.getOutputUri(); + String taskName = textSenseVO.getTaskName(); + String callbackUri = textSenseVO.getCallbackUri(); JSONObject jsonOptObj = new JSONObject(); jsonOptObj.put("withoutConversion", true); @@ -65,8 +63,6 @@ public class TextSenseAPIComm { extraJobs.add(jsonJobs); jsonObject.put("extraJobs", extraJobs); - - System.out.println("+++++++++++++++++ json ::: "+jsonObject.toJSONString()); HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(apiUrl); @@ -87,15 +83,12 @@ public class TextSenseAPIComm { Object obj = parser.parse(result); JSONObject object = (JSONObject) obj; - System.out.println("result ::: "+result); - returnJson = object; + returnJson.put("resultSts", "success"); }else { - returnJson.put("resultSts", "fail"); - } } catch (Exception e) { diff --git a/src/main/java/kcc/kccadr/textsense/web/TextSenseController.java b/src/main/java/kcc/kccadr/textsense/web/TextSenseController.java index c9fce91e..15bff7cb 100644 --- a/src/main/java/kcc/kccadr/textsense/web/TextSenseController.java +++ b/src/main/java/kcc/kccadr/textsense/web/TextSenseController.java @@ -3,6 +3,7 @@ package kcc.kccadr.textsense.web; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Stream; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -10,14 +11,10 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.ws.rs.POST; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.HttpClientBuilder; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; @@ -27,7 +24,7 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import com.google.api.client.http.HttpRequest; +import com.fasterxml.jackson.databind.ObjectMapper; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; @@ -239,7 +236,12 @@ public class TextSenseController { //TextSense API 요청 처리 TextSenseVO apiTextSenseVO = new TextSenseVO(); String outputFileExt = "text"; - String outputFileNm = "ePapy_" + EgovStringUtil.getTimeStamp() + "_OCR." + (outputFileExt == "text" ? "txt" : outputFileExt); + if(StringUtil.isNotEmpty(textSenseVO.getExcelYn()) && "Y".equals(textSenseVO.getExcelYn())) { + outputFileExt = "excel"; + } + String outputFileExtFileExt = extConversion(outputFileExt); + + String outputFileNm = "ePapy_" + EgovStringUtil.getTimeStamp() + "_OCR." + outputFileExtFileExt; String apiUrl = textSenseApiUrl + "/textsense/api/job/build"; String taskName = textSenseVO.getTaskName(); @@ -290,6 +292,7 @@ public class TextSenseController { modelAndView.addObject("id", id); modelAndView.addObject("name", taskName); modelAndView.addObject("status", status); + modelAndView.addObject("outputFileNm", outputFileNm); }else { @@ -488,7 +491,7 @@ public class TextSenseController { @POST @RequestMapping(value="/kccadr/textsence/textSenseResponse.do") - public HttpResponse textSenseResponse(HttpServletRequest req, HttpServletResponse res, @RequestBody @Valid String test) throws Exception{ + public ResponseEntity textSenseResponse(HttpServletRequest req, HttpServletResponse res, @RequestBody @Valid String pram) throws Exception{ JSONObject returnObject = new JSONObject(); @@ -496,22 +499,34 @@ public class TextSenseController { try { JSONParser parser = new JSONParser(); - Object obj = parser.parse(test); + Object obj = parser.parse(pram); JSONObject object = (JSONObject) obj; - String USER_1 = EgovStringUtil.isNullToString(object.get("USER_1")); - String ADDRESS_1 = EgovStringUtil.isNullToString(object.get("ADDRESS_1")); - String PHONE_1 = EgovStringUtil.isNullToString(object.get("PHONE_1")); - String MOBILE_1 = EgovStringUtil.isNullToString(object.get("MOBILE_1")); - String MAIL_1 = EgovStringUtil.isNullToString(object.get("MAIL_1")); - String USER_2 = EgovStringUtil.isNullToString(object.get("USER_2")); - String ADDRESS_2 = EgovStringUtil.isNullToString(object.get("ADDRESS_2")); - String PHONE_2 = EgovStringUtil.isNullToString(object.get("PHONE_2")); - String MOBILE_2 = EgovStringUtil.isNullToString(object.get("MOBILE_2")); - String MAIL_2 = EgovStringUtil.isNullToString(object.get("MAIL_2")); - String PURPOSE = EgovStringUtil.isNullToString(object.get("PURPOSE")); - String REASON = EgovStringUtil.isNullToString(object.get("REASON")); - String ATTACHMENT = EgovStringUtil.isNullToString(object.get("ATTACHMENT")); + String fileName = EgovStringUtil.isNullToString(object.get("fileName")); + String filePath = EgovStringUtil.isNullToString(object.get("filePath")); + + System.out.println( EgovStringUtil.isNullToString(object.get("user_1"))); + System.out.println( EgovStringUtil.isNullToString(object.get("address_1"))); + System.out.println( EgovStringUtil.isNullToString(object.get("phone_1"))); + System.out.println( EgovStringUtil.isNullToString(object.get("mobile_1"))); + System.out.println( EgovStringUtil.isNullToString(object.get("mail_1"))); + System.out.println( EgovStringUtil.isNullToString(object.get("user_2"))); + System.out.println( EgovStringUtil.isNullToString(object.get("address_2"))); + System.out.println( EgovStringUtil.isNullToString(object.get("phone_2"))); + System.out.println( EgovStringUtil.isNullToString(object.get("mobile_2"))); + System.out.println( EgovStringUtil.isNullToString(object.get("mail_2"))); + System.out.println( EgovStringUtil.isNullToString(object.get("purpose"))); + System.out.println( EgovStringUtil.isNullToString(object.get("reason"))); + System.out.println( EgovStringUtil.isNullToString(object.get("attachment"))); + + + TextSenseVO textSenseVO = new TextSenseVO(); + + textSenseVO.setFileName(fileName); + textSenseVO.setFilePath(filePath); + textSenseVO.setFileContents(object.toString()); + + textSenseService.insertTextSenseModify(textSenseVO); result = "success"; @@ -522,22 +537,68 @@ public class TextSenseController { returnObject.put("result", result); - HttpPost httpPost = new HttpPost(); - httpPost.setEntity(new StringEntity(returnObject.toString(), "UTF-8")); - httpPost.addHeader("Content-type", "application/json"); - httpPost.addHeader("Accept", "application/json"); - - System.out.println(httpPost.getMethod()); - System.out.println(httpPost.getEntity()); - System.out.println(httpPost.getAllHeaders()); - System.out.println(httpPost.getURI()); - - HttpClient httpClient = HttpClientBuilder.create().build(); - - return httpClient.execute(httpPost); + + return ResponseEntity.ok(returnObject); } + @SuppressWarnings("unused") + @RequestMapping(value="/kccadr/textsence/textSenseProcessChkAjax.do") + public ModelAndView textSenseProcessChkAjax(TextSenseVO textSenseVO) throws Exception{ + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + textSenseVO.setLastUpdusrId(user.getId()); + + if(user == null) { + modelAndView.addObject("result", "FAIL"); + modelAndView.addObject("message", "다시 로그인 해주세요."); + return modelAndView; + + } + try { + TextSenseVO resultVO = new TextSenseVO(); + resultVO = textSenseService.selectTextSenseModify(textSenseVO); + + System.out.println("resultVO.getFileContents() :: " + resultVO.getFileContents()); + + ObjectMapper mapper = new ObjectMapper(); + + Map map = mapper.readValue(resultVO.getFileContents(), Map.class); + + modelAndView.addObject("result", "SUCCESS"); + modelAndView.addObject("data", map); + } catch (Exception e) { + modelAndView.addObject("result", "FAIL"); + modelAndView.addObject("message", "저장에 실패했습니다."); + } + + return modelAndView; + + } + private String extConversion(String outputFileExt) { + + String outputFileExtFileExt = ""; + + switch (outputFileExt) { + case "text": + outputFileExtFileExt = "txt"; + break; + case "excel": + outputFileExtFileExt = "xlsx"; + break; + case "json": + outputFileExtFileExt = "json"; + break; + + default: + break; + } + return outputFileExtFileExt; + } } diff --git a/src/main/resources/egovframework/sqlmap/kccadr/textsense/TextSense_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/kccadr/textsense/TextSense_SQL_Mysql.xml index 04a247e6..eae2b486 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/textsense/TextSense_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/textsense/TextSense_SQL_Mysql.xml @@ -194,5 +194,31 @@ + + + INSERT + INTO adr_textsense_ocr_textdata + ( + filename + , filepath + , filecontents + ) + VALUES + ( + #fileName# + , #filePath# + , #fileContents# + ) + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index c8a1eb51..26c982d6 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -127,7 +127,7 @@ /web/kccadr/payment/inipay/* /kccadr/adjPgrMgr/drtCtr/drtCtrReg_for_ApprovManageEndDetail.do /web/kccadr/adjst/adjstProgressTutorial.do - + /kccadr/textsence/textSenseResponse.do diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/adjReqMgrOffRegist.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/adjReqMgrOffRegist.jsp index 32f3cbac..b1df86e2 100644 --- a/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/adjReqMgrOffRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/adjReqMgrOffRegist.jsp @@ -1632,6 +1632,7 @@ function openExampleAdminPop(exmpCd) { --%>
+
diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/popup/adjReqMgrOffOcrPop.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/popup/adjReqMgrOffOcrPop.jsp new file mode 100644 index 00000000..b470947c --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/kccadr/adjReqMgrOff/popup/adjReqMgrOffOcrPop.jsp @@ -0,0 +1,368 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> + + + + +오프라인 조정신청 이전신청 목록 + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + " /> + " /> + + + + + + +
+ + diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/fms/FmsFileModify.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/fms/FmsFileModify.jsp index 75b61e17..d90c6b86 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/fms/FmsFileModify.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/fms/FmsFileModify.jsp @@ -232,52 +232,52 @@ function fileUploadPopup(){ - - 첨부이미지 링크 - - - + + 첨부이미지 링크 + + + + + ' target="_blank"> + () +
+
+
+
+ + + + 첨부다운로드 링크 + + - ' target="_blank"> - () + '> + ( + + )
-
-
- - - - 첨부다운로드 링크 - - - - '> - ( - - ) -
-
-
- - - - 최종수정일 - - - - - - - 작성자 - - - - + + + + + 최종수정일 + + + + + + + 작성자 + + + +