이파피루스 OCR 신규 기능 추가
This commit is contained in:
parent
853fa9ebd5
commit
abe02c26ce
@ -0,0 +1,19 @@
|
|||||||
|
package kcc.kccadr.textsense.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TextSenseService {
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 결과 내용 저장
|
||||||
|
public int insertTextSenseRequestResultInfo(TextSenseVO textSenseVO) throws Exception;
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트
|
||||||
|
public List<TextSenseVO> selectTextSenseList(TextSenseVO textSenseVO) throws Exception;
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트 갯수
|
||||||
|
public int selectTextSenseListCount(TextSenseVO textSenseVO) throws Exception;
|
||||||
|
|
||||||
|
//TextSense OCR 상세내용 불러오기
|
||||||
|
public TextSenseVO selectTextSenseDetail(TextSenseVO textSenseVO) throws Exception;
|
||||||
|
|
||||||
|
}
|
||||||
199
src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java
Normal file
199
src/main/java/kcc/kccadr/textsense/service/TextSenseVO.java
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
package kcc.kccadr.textsense.service;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import kcc.com.cmm.ComDefaultVO;
|
||||||
|
|
||||||
|
public class TextSenseVO extends ComDefaultVO implements Serializable{
|
||||||
|
|
||||||
|
private String apiUrl;
|
||||||
|
private String inputUri;
|
||||||
|
private String outputUri;
|
||||||
|
private String taskName;
|
||||||
|
private String callbackUri;
|
||||||
|
|
||||||
|
//extraJob 파라미터 부분
|
||||||
|
private String url;
|
||||||
|
private String reqType;
|
||||||
|
private String reqOption;
|
||||||
|
private String outputType;
|
||||||
|
private String type;
|
||||||
|
private String pages;
|
||||||
|
|
||||||
|
//결과 파라미터 부분
|
||||||
|
private String id;
|
||||||
|
private String status;
|
||||||
|
private String inputFileLenth;
|
||||||
|
private String outputFileLenth;
|
||||||
|
private String createdat;
|
||||||
|
private String queuedat;
|
||||||
|
private String startdat;
|
||||||
|
private String completedat;
|
||||||
|
private String updatedat;
|
||||||
|
private String maxRetryCount;
|
||||||
|
private String retryCount;
|
||||||
|
private String collectedby;
|
||||||
|
private String externalId;
|
||||||
|
|
||||||
|
private String frstRegisterId;
|
||||||
|
private String frstRegistPnttm;
|
||||||
|
|
||||||
|
|
||||||
|
public String getApiUrl() {
|
||||||
|
return apiUrl;
|
||||||
|
}
|
||||||
|
public void setApiUrl(String apiUrl) {
|
||||||
|
this.apiUrl = apiUrl;
|
||||||
|
}
|
||||||
|
public String getInputUri() {
|
||||||
|
return inputUri;
|
||||||
|
}
|
||||||
|
public void setInputUri(String inputUri) {
|
||||||
|
this.inputUri = inputUri;
|
||||||
|
}
|
||||||
|
public String getOutputUri() {
|
||||||
|
return outputUri;
|
||||||
|
}
|
||||||
|
public void setOutputUri(String outputUri) {
|
||||||
|
this.outputUri = outputUri;
|
||||||
|
}
|
||||||
|
public String getTaskName() {
|
||||||
|
return taskName;
|
||||||
|
}
|
||||||
|
public void setTaskName(String taskName) {
|
||||||
|
this.taskName = taskName;
|
||||||
|
}
|
||||||
|
public String getCallbackUri() {
|
||||||
|
return callbackUri;
|
||||||
|
}
|
||||||
|
public void setCallbackUri(String callbackUri) {
|
||||||
|
this.callbackUri = callbackUri;
|
||||||
|
}
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
public String getReqType() {
|
||||||
|
return reqType;
|
||||||
|
}
|
||||||
|
public void setReqType(String reqType) {
|
||||||
|
this.reqType = reqType;
|
||||||
|
}
|
||||||
|
public String getReqOption() {
|
||||||
|
return reqOption;
|
||||||
|
}
|
||||||
|
public void setReqOption(String reqOption) {
|
||||||
|
this.reqOption = reqOption;
|
||||||
|
}
|
||||||
|
public String getOutputType() {
|
||||||
|
return outputType;
|
||||||
|
}
|
||||||
|
public void setOutputType(String outputType) {
|
||||||
|
this.outputType = outputType;
|
||||||
|
}
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
public String getPages() {
|
||||||
|
return pages;
|
||||||
|
}
|
||||||
|
public void setPages(String pages) {
|
||||||
|
this.pages = pages;
|
||||||
|
}
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
public String getInputFileLenth() {
|
||||||
|
return inputFileLenth;
|
||||||
|
}
|
||||||
|
public void setInputFileLenth(String inputFileLenth) {
|
||||||
|
this.inputFileLenth = inputFileLenth;
|
||||||
|
}
|
||||||
|
public String getOutputFileLenth() {
|
||||||
|
return outputFileLenth;
|
||||||
|
}
|
||||||
|
public void setOutputFileLenth(String outputFileLenth) {
|
||||||
|
this.outputFileLenth = outputFileLenth;
|
||||||
|
}
|
||||||
|
public String getCreatedat() {
|
||||||
|
return createdat;
|
||||||
|
}
|
||||||
|
public void setCreatedat(String createdat) {
|
||||||
|
this.createdat = createdat;
|
||||||
|
}
|
||||||
|
public String getQueuedat() {
|
||||||
|
return queuedat;
|
||||||
|
}
|
||||||
|
public void setQueuedat(String queuedat) {
|
||||||
|
this.queuedat = queuedat;
|
||||||
|
}
|
||||||
|
public String getStartdat() {
|
||||||
|
return startdat;
|
||||||
|
}
|
||||||
|
public void setStartdat(String startdat) {
|
||||||
|
this.startdat = startdat;
|
||||||
|
}
|
||||||
|
public String getCompletedat() {
|
||||||
|
return completedat;
|
||||||
|
}
|
||||||
|
public void setCompletedat(String completedat) {
|
||||||
|
this.completedat = completedat;
|
||||||
|
}
|
||||||
|
public String getUpdatedat() {
|
||||||
|
return updatedat;
|
||||||
|
}
|
||||||
|
public void setUpdatedat(String updatedat) {
|
||||||
|
this.updatedat = updatedat;
|
||||||
|
}
|
||||||
|
public String getMaxRetryCount() {
|
||||||
|
return maxRetryCount;
|
||||||
|
}
|
||||||
|
public void setMaxRetryCount(String maxRetryCount) {
|
||||||
|
this.maxRetryCount = maxRetryCount;
|
||||||
|
}
|
||||||
|
public String getRetryCount() {
|
||||||
|
return retryCount;
|
||||||
|
}
|
||||||
|
public void setRetryCount(String retryCount) {
|
||||||
|
this.retryCount = retryCount;
|
||||||
|
}
|
||||||
|
public String getCollectedby() {
|
||||||
|
return collectedby;
|
||||||
|
}
|
||||||
|
public void setCollectedby(String collectedby) {
|
||||||
|
this.collectedby = collectedby;
|
||||||
|
}
|
||||||
|
public String getExternalId() {
|
||||||
|
return externalId;
|
||||||
|
}
|
||||||
|
public void setExternalId(String externalId) {
|
||||||
|
this.externalId = externalId;
|
||||||
|
}
|
||||||
|
public String getFrstRegisterId() {
|
||||||
|
return frstRegisterId;
|
||||||
|
}
|
||||||
|
public void setFrstRegisterId(String frstRegisterId) {
|
||||||
|
this.frstRegisterId = frstRegisterId;
|
||||||
|
}
|
||||||
|
public String getFrstRegistPnttm() {
|
||||||
|
return frstRegistPnttm;
|
||||||
|
}
|
||||||
|
public void setFrstRegistPnttm(String frstRegistPnttm) {
|
||||||
|
this.frstRegistPnttm = frstRegistPnttm;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
package kcc.kccadr.textsense.service.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseVO;
|
||||||
|
|
||||||
|
@Repository("TextSenseDAO")
|
||||||
|
public class TextSenseDAO extends EgovAbstractDAO{
|
||||||
|
|
||||||
|
|
||||||
|
public int insertTextSenseRequestResultInfo(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
result = update("textSenseDAO.insertTextSenseRequestResultInfo", textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("insertTextSenseRequestResultInfo DAO Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<TextSenseVO> selectTextSenseList(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
List<TextSenseVO> resultList = new ArrayList<TextSenseVO>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
resultList = (List<TextSenseVO>) list("textSenseDAO.selectTextSenseList", textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseList Service DAO Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트 갯수
|
||||||
|
public int selectTextSenseListCount(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
|
||||||
|
int resultCnt = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
resultCnt = (int) select("textSenseDAO.selectTextSenseListCount", textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseListCount Service DAO Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return resultCnt;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public TextSenseVO selectTextSenseDetail(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
TextSenseVO result = new TextSenseVO();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
result = (TextSenseVO) select("textSenseDAO.selectTextSenseDetail", textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseDetail Service DAO Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
package kcc.kccadr.textsense.service.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseService;
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseVO;
|
||||||
|
|
||||||
|
@Service("TextSenseService")
|
||||||
|
public class TextSenseServiceImpl implements TextSenseService{
|
||||||
|
|
||||||
|
@Resource(name = "TextSenseDAO")
|
||||||
|
private TextSenseDAO textSenseDAO;
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 결과 내용 저장
|
||||||
|
@Override
|
||||||
|
public int insertTextSenseRequestResultInfo(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
result = textSenseDAO.insertTextSenseRequestResultInfo(textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("insertTextSenseRequestResultInfo Service Impl Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트
|
||||||
|
@Override
|
||||||
|
public List<TextSenseVO> selectTextSenseList(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
List<TextSenseVO> resultList = new ArrayList<TextSenseVO>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
resultList = textSenseDAO.selectTextSenseList(textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseList Service Impl Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TextSense OCR 처리요청 리스트 갯수
|
||||||
|
@Override
|
||||||
|
public int selectTextSenseListCount(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
|
||||||
|
int resultCnt = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
resultCnt = textSenseDAO.selectTextSenseListCount(textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseListCount Service Impl Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return resultCnt;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//TextSense OCR 상세내용 불러오기
|
||||||
|
@Override
|
||||||
|
public TextSenseVO selectTextSenseDetail(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
TextSenseVO result = new TextSenseVO();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
result = textSenseDAO.selectTextSenseDetail(textSenseVO);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("selectTextSenseDetail Service Impl Error !!! " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
102
src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java
Normal file
102
src/main/java/kcc/kccadr/textsense/web/TextSenseAPIComm.java
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
package kcc.kccadr.textsense.web;
|
||||||
|
|
||||||
|
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.apache.http.util.EntityUtils;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseVO;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class TextSenseAPIComm {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TextSense OCR 요청처리 하기
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static JSONObject getTextSenseRequest(TextSenseVO textSenseVO) throws Exception{
|
||||||
|
JSONObject returnJson = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
String apiUrl = textSenseVO.getApiUrl(); //"http://222.231.43.29:7777/textsense/api/job/build";
|
||||||
|
String inputUri = textSenseVO.getInputUri(); //"http://119.193.215.98:8097/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:8097/web/main/textsence/testOutputUriPage.do";
|
||||||
|
String taskName = textSenseVO.getTaskName();//"textsense-test1";
|
||||||
|
String callbackUri = textSenseVO.getCallbackUri();//"http://119.193.215.98:8097/web/main/textsence/testCallbackUriPage.do";
|
||||||
|
//String extraJobs = "";
|
||||||
|
|
||||||
|
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("inputUri", inputUri);
|
||||||
|
jsonObject.put("outputUri", outputUri);
|
||||||
|
jsonObject.put("taskName", taskName);
|
||||||
|
jsonObject.put("callbackUri", callbackUri);
|
||||||
|
|
||||||
|
JSONArray extraJobs = new JSONArray();
|
||||||
|
JSONObject jsonJobs = new JSONObject();
|
||||||
|
|
||||||
|
JSONObject jsonOption = new JSONObject();
|
||||||
|
|
||||||
|
|
||||||
|
//extraJobs의 Option 항목 셋팅 해주기
|
||||||
|
jsonOption.put("url", textSenseVO.getUrl());
|
||||||
|
jsonOption.put("reqType", textSenseVO.getReqType());
|
||||||
|
jsonOption.put("reqOption", "");
|
||||||
|
jsonOption.put("outputType", textSenseVO.getOutputType());
|
||||||
|
|
||||||
|
//extraJobs 셋팅해주기
|
||||||
|
jsonJobs.put("type", textSenseVO.getType());
|
||||||
|
jsonJobs.put("option", jsonOption);
|
||||||
|
|
||||||
|
extraJobs.add(jsonJobs);
|
||||||
|
|
||||||
|
jsonObject.put("extraJobs", extraJobs);
|
||||||
|
|
||||||
|
System.out.println("+++++++++++++++++ json ::: "+jsonObject.toJSONString());
|
||||||
|
|
||||||
|
HttpClient httpClient = HttpClientBuilder.create().build();
|
||||||
|
HttpPost httpPost = new HttpPost(apiUrl);
|
||||||
|
httpPost.setEntity(new StringEntity(jsonObject.toString(), "UTF-8"));
|
||||||
|
httpPost.addHeader("Content-type", "application/json");
|
||||||
|
httpPost.addHeader("Accept", "application/json");
|
||||||
|
|
||||||
|
HttpResponse response = httpClient.execute(httpPost);
|
||||||
|
|
||||||
|
String result = "";
|
||||||
|
String statusCode = Integer.toString(response.getStatusLine().getStatusCode());
|
||||||
|
|
||||||
|
if(statusCode.equals("200")) {
|
||||||
|
result = EntityUtils.toString(response.getEntity());
|
||||||
|
|
||||||
|
result = new String(result.getBytes("iso-8859-1"));//한글 깨짐 현상이 있어서 변환 해줌.
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
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) {
|
||||||
|
System.out.println("++++++++++++++++ getTextSenseRequest Error!!! "+e);
|
||||||
|
returnJson.put("resultSts", "fail");
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnJson;
|
||||||
|
}
|
||||||
|
}
|
||||||
312
src/main/java/kcc/kccadr/textsense/web/TextSenseController.java
Normal file
312
src/main/java/kcc/kccadr/textsense/web/TextSenseController.java
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
package kcc.kccadr.textsense.web;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||||
|
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||||
|
import kcc.com.cmm.LoginVO;
|
||||||
|
import kcc.com.cmm.service.EgovFileMngService;
|
||||||
|
import kcc.com.cmm.service.EgovFileMngUtil;
|
||||||
|
import kcc.com.cmm.service.FileVO;
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseService;
|
||||||
|
import kcc.kccadr.textsense.service.TextSenseVO;
|
||||||
|
import kcc.let.utl.fcc.service.EgovStringUtil;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class TextSenseController {
|
||||||
|
|
||||||
|
@Resource(name = "EgovFileMngUtil")
|
||||||
|
private EgovFileMngUtil fileUtil;
|
||||||
|
|
||||||
|
@Resource(name = "EgovFileMngService")
|
||||||
|
private EgovFileMngService fileMngService;
|
||||||
|
|
||||||
|
@Resource(name = "TextSenseService")
|
||||||
|
private TextSenseService textSenseService;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.textSense.apiUrl']}")
|
||||||
|
private String textSenseApiUrl;
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value="/kccadr/textsence/selectTextSenseList.do")
|
||||||
|
public String selectTextSenseList(@ModelAttribute("searchVO")TextSenseVO textSenseVO, ModelMap model) throws Exception{
|
||||||
|
|
||||||
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||||
|
|
||||||
|
if(user == null) {
|
||||||
|
|
||||||
|
return "redirect:/uat/uia/EgovLoginUsr.do";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(textSenseVO.getPageUnit() != 10) {
|
||||||
|
textSenseVO.setPageUnit(textSenseVO.getPageUnit());
|
||||||
|
}
|
||||||
|
|
||||||
|
if("".equals(textSenseVO.getSearchSortCnd())){
|
||||||
|
textSenseVO.setSearchSortCnd("frstRegistPnttm");
|
||||||
|
textSenseVO.setSearchSortOrd("desc");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** paging */
|
||||||
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
|
paginationInfo.setCurrentPageNo(textSenseVO.getPageIndex());
|
||||||
|
paginationInfo.setRecordCountPerPage(textSenseVO.getPageUnit());
|
||||||
|
paginationInfo.setPageSize(textSenseVO.getPageSize());
|
||||||
|
|
||||||
|
textSenseVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||||
|
textSenseVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
|
textSenseVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
|
textSenseVO.setFrstRegisterId(user.getId());
|
||||||
|
|
||||||
|
paginationInfo.setTotalRecordCount(textSenseService.selectTextSenseListCount(textSenseVO));
|
||||||
|
model.addAttribute("paginationInfo", paginationInfo);
|
||||||
|
List<TextSenseVO> list = textSenseService.selectTextSenseList(textSenseVO);
|
||||||
|
model.addAttribute("list", list);
|
||||||
|
|
||||||
|
return "kccadr/textSense/EgovTextSenseList";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TextSense OCR 등록화면 호출
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@RequestMapping(value="/kccadr/textsence/selectTextSenseRegist.do")
|
||||||
|
public String selectTextSenseRegist(@ModelAttribute("searchVO")TextSenseVO textSenseVO) throws Exception{
|
||||||
|
|
||||||
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||||
|
|
||||||
|
if(user == null) {
|
||||||
|
|
||||||
|
return "redirect:/uat/uia/EgovLoginUsr.do";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return "kccadr/textSense/EgovTextSenseRegist";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TextSense OCR 상세화면 호출
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@RequestMapping(value="/kccadr/textsence/selectTextSenseDetail.do")
|
||||||
|
public String selectTextSenseDetail(@ModelAttribute("searchVO")TextSenseVO textSenseVO, ModelMap model) throws Exception{
|
||||||
|
|
||||||
|
System.out.println("++++++++++++++++++++"+textSenseVO.getId());
|
||||||
|
|
||||||
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||||
|
|
||||||
|
if(user == null) {
|
||||||
|
|
||||||
|
return "redirect:/uat/uia/EgovLoginUsr.do";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
textSenseVO.setFrstRegisterId(user.getId());
|
||||||
|
TextSenseVO resultVO = textSenseService.selectTextSenseDetail(textSenseVO);
|
||||||
|
|
||||||
|
model.addAttribute("textSenseVO", resultVO);
|
||||||
|
|
||||||
|
return "kccadr/textSense/EgovTextSenseDetail";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TextSense OCR API 요청처리해주기
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@RequestMapping(value="/kccadr/textsence/textSenseRequestAjax.do")
|
||||||
|
public ModelAndView textSenseRequest(final MultipartHttpServletRequest multiRequest, TextSenseVO textSenseVO) throws Exception{
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView();
|
||||||
|
modelAndView.setViewName("jsonView");
|
||||||
|
|
||||||
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||||
|
|
||||||
|
if(user == null) {
|
||||||
|
|
||||||
|
modelAndView.addObject("status", "loginFail");
|
||||||
|
return modelAndView;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//첨부파일 등록 API 전송 요청
|
||||||
|
final Map<String, MultipartFile> files = multiRequest.getFileMap();
|
||||||
|
String atchFileId = "";
|
||||||
|
String isThumbFile = "";
|
||||||
|
|
||||||
|
List<String> extList = new ArrayList<String>();
|
||||||
|
extList.add("jpg");
|
||||||
|
extList.add("jpeg");
|
||||||
|
extList.add("png");
|
||||||
|
extList.add("tif");
|
||||||
|
extList.add("tiff");
|
||||||
|
extList.add("multi-tiff");
|
||||||
|
extList.add("pdf");
|
||||||
|
extList.add("bmp");
|
||||||
|
|
||||||
|
//알림톡 템플릿에 이미지가 포함되어 있는 경우 처리
|
||||||
|
if (!files.isEmpty()){
|
||||||
|
|
||||||
|
if ("".equals(atchFileId)) {
|
||||||
|
List<FileVO> result = fileUtil.parseFileInf(files, "TSOCR_", 0, atchFileId, "", isThumbFile);
|
||||||
|
|
||||||
|
for(FileVO fileVO : result) {
|
||||||
|
|
||||||
|
String fileExt = fileVO.getFileExtsn();
|
||||||
|
|
||||||
|
//파일 확장자 체크
|
||||||
|
if(!extList.contains(fileExt)) {
|
||||||
|
|
||||||
|
modelAndView.addObject("result", "fail");
|
||||||
|
return modelAndView;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//파일 정보 디비에 저장
|
||||||
|
atchFileId = fileMngService.insertFileInfs(result);
|
||||||
|
|
||||||
|
System.out.println("++++++++++++++ atchFileId ::: "+atchFileId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//TextSense API 요청 처리
|
||||||
|
TextSenseVO apiTextSenseVO = new TextSenseVO();
|
||||||
|
String outputFileNm = "ePapy_" + EgovStringUtil.getTimeStamp() + "_OCR.json";
|
||||||
|
String apiUrl = textSenseApiUrl + "/textsense/api/job/build";
|
||||||
|
String taskName = textSenseVO.getTaskName();
|
||||||
|
|
||||||
|
apiTextSenseVO.setApiUrl(apiUrl);
|
||||||
|
apiTextSenseVO.setInputUri("http://119.193.215.98:8097/cmm/fms/FileDown.do?atchFileId="+ atchFileId +"&fileSn=0"); //http://119.193.215.98:8097/kccadrPb/usr/image/common/top_logo.png
|
||||||
|
apiTextSenseVO.setOutputUri("file:/home/kcc_adr_ocr_dir/" + outputFileNm);
|
||||||
|
apiTextSenseVO.setCallbackUri("http://119.193.215.98:8097/kccadr/textsence/testCallbackUriPage.do");
|
||||||
|
apiTextSenseVO.setTaskName(taskName);
|
||||||
|
|
||||||
|
//extraJobs의 Option 항목 셋팅 해주기
|
||||||
|
apiTextSenseVO.setUrl(textSenseApiUrl);
|
||||||
|
apiTextSenseVO.setReqType("document"); //고정값으로 변경 불가
|
||||||
|
apiTextSenseVO.setReqOption(""); //기본값으로 빈값을 넣어준다.
|
||||||
|
apiTextSenseVO.setOutputType("json"); //지원하는 output type은 pdf, json, excel, text, text-split 입니다
|
||||||
|
apiTextSenseVO.setType("textSense"); //고정값으로 변경 불가
|
||||||
|
|
||||||
|
JSONObject resultJson = TextSenseAPIComm.getTextSenseRequest(apiTextSenseVO);
|
||||||
|
|
||||||
|
System.out.println("==========Controller============== resultJson ::: "+resultJson.toJSONString());
|
||||||
|
|
||||||
|
//처리 결과가 성공이면 디비에 저장해주고 끝낸다.
|
||||||
|
String resultSts = resultJson.get("resultSts").toString();
|
||||||
|
if(resultSts.equals("success")) {
|
||||||
|
|
||||||
|
//요청 결과내용 데이터베이스에 저장
|
||||||
|
TextSenseVO resultJsVO = new TextSenseVO();
|
||||||
|
|
||||||
|
String id = resultJson.get("id").toString();
|
||||||
|
String status = resultJson.get("status").toString();
|
||||||
|
|
||||||
|
taskName = resultJson.get("name").toString();
|
||||||
|
|
||||||
|
resultJsVO.setId(id);
|
||||||
|
resultJsVO.setTaskName(taskName);
|
||||||
|
resultJsVO.setStatus(status);
|
||||||
|
resultJsVO.setInputUri(apiTextSenseVO.getInputUri());
|
||||||
|
resultJsVO.setOutputUri(apiTextSenseVO.getOutputUri());
|
||||||
|
resultJsVO.setCallbackUri(apiTextSenseVO.getCallbackUri());
|
||||||
|
resultJsVO.setFrstRegisterId(user.getId());
|
||||||
|
|
||||||
|
int resultCnt = textSenseService.insertTextSenseRequestResultInfo(resultJsVO);
|
||||||
|
|
||||||
|
System.out.println("+++++++++++++++++ resultCnt ::: "+resultCnt);
|
||||||
|
|
||||||
|
modelAndView.addObject("result", "success");
|
||||||
|
modelAndView.addObject("id", id);
|
||||||
|
modelAndView.addObject("name", taskName);
|
||||||
|
modelAndView.addObject("status", status);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
|
||||||
|
modelAndView.addObject("result", "fail");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return modelAndView;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value="/kccadr/textsence/testCallbackUriPage.do")
|
||||||
|
public void testCallbackUriPage(HttpServletRequest req, HttpServletResponse res, @RequestBody JSONObject jsonObject) throws Exception{
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("++++++++++++++++++++++++++/web/main/textsence/testCallbackUriPage.do++++++++++++++++++++++++++++++++++");
|
||||||
|
|
||||||
|
System.out.println("+++++++++++ jsonString ::: "+jsonObject.toJSONString());
|
||||||
|
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
Object obj = parser.parse(jsonObject.toString());
|
||||||
|
JSONObject object = (JSONObject) obj;
|
||||||
|
|
||||||
|
String id = object.get("id").toString();
|
||||||
|
String name = object.get("name").toString();
|
||||||
|
String inputUri = object.get("inputUri").toString();
|
||||||
|
String inputFileLength = object.get("inputFileLength").toString();
|
||||||
|
String outputUri = object.get("outputUri").toString();
|
||||||
|
String outputFileLength = object.get("outputFileLength").toString();
|
||||||
|
String status = object.get("status").toString();
|
||||||
|
String createdAt = object.get("createdAt").toString();
|
||||||
|
//String queuedAt = object.get("queuedAt").toString();
|
||||||
|
String startedAt = object.get("startedAt").toString();
|
||||||
|
String completedAt = object.get("completedAt").toString();
|
||||||
|
//String updatedAt = object.get("updatedAt").toString();
|
||||||
|
String maxRetryCount = object.get("maxRetryCount").toString();
|
||||||
|
String retryCount = object.get("retryCount").toString();
|
||||||
|
String collectedBy = object.get("collectedBy").toString();
|
||||||
|
String callbackUri = object.get("callbackUri").toString();
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("+++++++++++++++++++++++ id ::: "+id);
|
||||||
|
System.out.println("+++++++++++++++++++++++ name ::: "+name);
|
||||||
|
System.out.println("+++++++++++++++++++++++ inputUri ::: "+inputUri);
|
||||||
|
System.out.println("+++++++++++++++++++++++ inputFileLength ::: "+inputFileLength);
|
||||||
|
System.out.println("+++++++++++++++++++++++ outputUri ::: "+outputUri);
|
||||||
|
System.out.println("+++++++++++++++++++++++ outputFileLength ::: "+outputFileLength);
|
||||||
|
System.out.println("+++++++++++++++++++++++ status ::: "+status);
|
||||||
|
System.out.println("+++++++++++++++++++++++ createdAt ::: "+createdAt);
|
||||||
|
//System.out.println("+++++++++++++++++++++++ queuedAt ::: "+queuedAt);
|
||||||
|
System.out.println("+++++++++++++++++++++++ startedAt ::: "+startedAt);
|
||||||
|
System.out.println("+++++++++++++++++++++++ completedAt ::: "+completedAt);
|
||||||
|
//System.out.println("+++++++++++++++++++++++ updatedAt ::: "+updatedAt);
|
||||||
|
System.out.println("+++++++++++++++++++++++ maxRetryCount ::: "+maxRetryCount);
|
||||||
|
System.out.println("+++++++++++++++++++++++ retryCount ::: "+retryCount);
|
||||||
|
System.out.println("+++++++++++++++++++++++ collectedBy ::: "+collectedBy);
|
||||||
|
System.out.println("+++++++++++++++++++++++ callbackUri ::: "+callbackUri);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -232,3 +232,5 @@ Globals.Streamdocs.Url=http://192.168.0.176:8085/streamdocs/v4/documents
|
|||||||
Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com
|
Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com
|
||||||
#\uc2e4\uc11c\ubc84
|
#\uc2e4\uc11c\ubc84
|
||||||
#Globals.BizPpurio.siteUrl=https://api.bizppurio.com
|
#Globals.BizPpurio.siteUrl=https://api.bizppurio.com
|
||||||
|
|
||||||
|
Globals.textSense.apiUrl=http://222.231.43.29:7777
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
|
||||||
|
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
|
||||||
|
|
||||||
|
<sqlMapConfig>
|
||||||
|
<sqlMap resource="egovframework/sqlmap/kccadr/textsense/TextSense_SQL_Mysql.xml"/>
|
||||||
|
</sqlMapConfig>
|
||||||
@ -0,0 +1,114 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
|
||||||
|
<sqlMap namespace="Stts">
|
||||||
|
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
|
||||||
|
<typeAlias alias="TextSenseVO" type="kcc.kccadr.textsense.service.TextSenseVO"/>
|
||||||
|
|
||||||
|
<update id="textSenseDAO.insertTextSenseRequestResultInfo" parameterClass="TextSenseVO">
|
||||||
|
|
||||||
|
INSERT
|
||||||
|
INTO ADR_TEXTSENSE_OCR
|
||||||
|
(
|
||||||
|
ID,
|
||||||
|
TASK_NAME,
|
||||||
|
INPUT_URI,
|
||||||
|
OUTPUT_URI,
|
||||||
|
STATUS,
|
||||||
|
CALLBACK_URI,
|
||||||
|
FRST_REGISTER_ID,
|
||||||
|
FRST_REGIST_PNTTM
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
#id#
|
||||||
|
, #taskName#
|
||||||
|
, #inputUri#
|
||||||
|
, #outputUri#
|
||||||
|
, #status#
|
||||||
|
, #callbackUri#
|
||||||
|
, #frstRegisterId#
|
||||||
|
, NOW()
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<select id="textSenseDAO.selectTextSenseList" parameterClass="TextSenseVO" resultClass="TextSenseVO">
|
||||||
|
|
||||||
|
SELECT A.ID AS id,
|
||||||
|
A.TASK_NAME AS taskName,
|
||||||
|
A.INPUT_URI AS inputUri,
|
||||||
|
A.OUTPUT_URI AS outputUri,
|
||||||
|
A.INPUT_FILE_LENGTH AS inputFileLenth,
|
||||||
|
A.OUTPUT_FILE_LENGTH AS outputfileLength,
|
||||||
|
A.STATUS AS status,
|
||||||
|
A.CREATEDAT AS createdat,
|
||||||
|
A.QUEUEDAT AS queuedat,
|
||||||
|
A.STARTEDAT AS startdat,
|
||||||
|
A.COMPLETEDAT AS completedat,
|
||||||
|
A.UPDATEDAT AS updatedat,
|
||||||
|
A.MAX_RETRY_COUNT AS maxRetryCount,
|
||||||
|
A.RETRY_COUNT AS retryCount,
|
||||||
|
A.COLLECTEDBY AS collectedby,
|
||||||
|
A.CALLBACK_URI AS callbackUri,
|
||||||
|
A.EXTERNAL_ID AS externalId,
|
||||||
|
A.FRST_REGISTER_ID AS frstRegisterId,
|
||||||
|
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d %T') AS frstRegistPnttm
|
||||||
|
FROM ADR_TEXTSENSE_OCR A
|
||||||
|
WHERE 1=1
|
||||||
|
AND A.FRST_REGISTER_ID = #frstRegisterId#
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="1">
|
||||||
|
TASK_NAME LIKE CONCAT('%' , #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
ORDER BY A.FRST_REGIST_PNTTM DESC
|
||||||
|
LIMIT #recordCountPerPage# OFFSET #firstIndex#
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="textSenseDAO.selectTextSenseListCount" parameterClass="TextSenseVO" resultClass="Integer">
|
||||||
|
|
||||||
|
SELECT COUNT(A.ID)
|
||||||
|
FROM ADR_TEXTSENSE_OCR A
|
||||||
|
WHERE 1=1
|
||||||
|
AND A.FRST_REGISTER_ID = #frstRegisterId#
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="1">
|
||||||
|
TASK_NAME LIKE CONCAT('%' , #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="textSenseDAO.selectTextSenseDetail" parameterClass="TextSenseVO" resultClass="TextSenseVO">
|
||||||
|
|
||||||
|
SELECT A.ID AS id,
|
||||||
|
A.TASK_NAME AS taskName,
|
||||||
|
A.INPUT_URI AS inputUri,
|
||||||
|
A.OUTPUT_URI AS outputUri,
|
||||||
|
A.INPUT_FILE_LENGTH AS inputFileLenth,
|
||||||
|
A.OUTPUT_FILE_LENGTH AS outputFileLenth,
|
||||||
|
A.STATUS AS status,
|
||||||
|
A.CREATEDAT AS createdat,
|
||||||
|
A.QUEUEDAT AS queuedat,
|
||||||
|
A.STARTEDAT AS startdat,
|
||||||
|
A.COMPLETEDAT AS completedat,
|
||||||
|
A.UPDATEDAT AS updatedat,
|
||||||
|
A.MAX_RETRY_COUNT AS maxRetryCount,
|
||||||
|
A.RETRY_COUNT AS retryCount,
|
||||||
|
A.COLLECTEDBY AS collectedby,
|
||||||
|
A.CALLBACK_URI AS callbackUri,
|
||||||
|
A.EXTERNAL_ID AS externalId,
|
||||||
|
A.FRST_REGISTER_ID AS frstRegisterId,
|
||||||
|
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d %T') AS frstRegistPnttm
|
||||||
|
FROM ADR_TEXTSENSE_OCR A
|
||||||
|
WHERE 1=1
|
||||||
|
AND A.FRST_REGISTER_ID = #frstRegisterId#
|
||||||
|
AND A.ID = #id#
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</sqlMap>
|
||||||
@ -0,0 +1,235 @@
|
|||||||
|
<%--
|
||||||
|
Class Name : EgovTextSenseDetail.jsp
|
||||||
|
Description : TextSense OCR 상세화면
|
||||||
|
Modification Information
|
||||||
|
|
||||||
|
수정일 수정자 수정내용
|
||||||
|
------- -------- ---------------------------
|
||||||
|
2023.09.27 우영두 최초 생성
|
||||||
|
|
||||||
|
author : 공통서비스 개발팀 JJY
|
||||||
|
since : 2023.09.27
|
||||||
|
--%>
|
||||||
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="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="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %>
|
||||||
|
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Language" content="ko" >
|
||||||
|
<title>OCR 상세화면</title>
|
||||||
|
<script type="text/javascript" src="<c:url value="/validator.do"/>"></script>
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovCmmUtl.js'/>" ></script>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javaScript" language="javascript" defer="defer">
|
||||||
|
|
||||||
|
function fnListPage(){
|
||||||
|
document.textSenseVO.action = "<c:url value='/kccadr/textsence/selectTextSenseList.do'/>";
|
||||||
|
document.textSenseVO.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.tbType02 .radio_wrap input[type=radio] + label {margin-right:15px;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="textSenseVO" name="textSenseVO" method="post">
|
||||||
|
<input type="hidden" name="pageIndex" value="1"/>
|
||||||
|
|
||||||
|
<!-- cont -->
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>관리자수정</h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home"><a href="/"><i></i></a></li>
|
||||||
|
<li>
|
||||||
|
<p>OCR 관리</p>
|
||||||
|
</li>
|
||||||
|
<li><span class="cur_nav">OCR 상세</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_상세 -->
|
||||||
|
<div class="tbType02">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 80%">
|
||||||
|
</colgroup>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th><span class="reqArea">OCR ID</span></th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.id}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><span class="reqArea">Task Name</span></th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.taskName}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><span class="reqArea">Input URI</span></th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.inputUri}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Output URI</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.outputUri}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<th>Callback URI</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.callbackUri}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<th>Input 파일 길이</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.inputFileLenth}">
|
||||||
|
<c:out value="${textSenseVO.inputFileLenth}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<th>Output 파일 길이</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.outputFileLenth}">
|
||||||
|
<c:out value="${textSenseVO.outputFileLenth}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<th>진행상태</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${textSenseVO.status eq 'AWAITING'}">
|
||||||
|
변환중
|
||||||
|
</c:when>
|
||||||
|
<c:when test="${textSenseVO.status eq 'SUCCESS'}">
|
||||||
|
처리완료
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
처리실패
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>요청 작업 생성 시간</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.createdat}">
|
||||||
|
<c:out value="${textSenseVO.createdat}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>대기상태로 변경된 시간</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.queuedat}">
|
||||||
|
<c:out value="${textSenseVO.queuedat}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>변환작업 시작 시간</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.startdat}">
|
||||||
|
<c:out value="${textSenseVO.startdat}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>변환작업 완료 시간</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.completedat}">
|
||||||
|
<c:out value="${textSenseVO.completedat}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>변환작업 재시도 횟수</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty textSenseVO.retryCount}">
|
||||||
|
<c:out value="${textSenseVO.retryCount}"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
-
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>등록일자</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<c:out value="${textSenseVO.frstRegistPnttm}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list_상세 -->
|
||||||
|
<div class="btn_wrap btn_layout01">
|
||||||
|
<button class="btnType03" onclick="fnListPage(); return false;">목 록</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //cont -->
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,176 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||||
|
<%
|
||||||
|
/**
|
||||||
|
* @Class Name : EgovTextSenseList.jsp
|
||||||
|
* @Description : OCR 관리 리스트
|
||||||
|
* @Modification Information
|
||||||
|
* @
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ ------- -------- ---------------------------
|
||||||
|
* @ 2023.09.26 우영두 최초 생성
|
||||||
|
* @author 우영두
|
||||||
|
* @since 2023.09.26
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function fncGoList(){
|
||||||
|
linkPage(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function linkPage(pageNo){
|
||||||
|
var listForm = document.listForm ;
|
||||||
|
listForm.pageIndex.value = pageNo ;
|
||||||
|
listForm.searchCondition.value = $('#searchCondition').val();
|
||||||
|
listForm.searchKeyword.value = $('#searchKeyword').val();
|
||||||
|
listForm.action = "<c:url value='/kccadr/textsence/selectTextSenseList.do'/>";
|
||||||
|
listForm.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function fncTextSenseReg() {
|
||||||
|
|
||||||
|
location.href="/kccadr/textsence/selectTextSenseRegist.do";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function goTextSenseDetail(id){
|
||||||
|
|
||||||
|
var form = document.listForm;
|
||||||
|
form.id.value = id;
|
||||||
|
|
||||||
|
form.action="/kccadr/textsence/selectTextSenseDetail.do";
|
||||||
|
form.submit();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<title>OCR 목록</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="listForm" name="listForm" method="post">
|
||||||
|
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}' default='1' />"/>
|
||||||
|
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
|
||||||
|
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
|
||||||
|
<input type="hidden" id="id" name="id" value=""/>
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>OCR 목록</h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home">
|
||||||
|
<a href="/">
|
||||||
|
<i></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>OCR 관리</p>
|
||||||
|
</li>
|
||||||
|
<li><span class="cur_nav">목록</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_top -->
|
||||||
|
<div class="list_top">
|
||||||
|
<div class="list_util">
|
||||||
|
<div class="detail_search">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p class="tit_text">구분</p>
|
||||||
|
<select name="searchCondition" id="searchCondition">
|
||||||
|
<option value="1" ${searchVO.searchCondition eq '1' ? 'selected' : '' }>TaskName</option>
|
||||||
|
</select>
|
||||||
|
<input type="text" id="searchKeyword" name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${searchVO.searchKeyword}'/>">
|
||||||
|
<button class="btn_search" onclick="fncGoList(); return false;">검색</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //list_top -->
|
||||||
|
|
||||||
|
<!-- list -->
|
||||||
|
<div class="tbType01">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 5%">
|
||||||
|
<col style="width: auto">
|
||||||
|
<col style="width: 10%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>번호<button class="sort btn_sort" id="sort_id"></button></th>
|
||||||
|
<th>TaskName<button type="button" class="sort sortBtn" id="sort_taskName"></button></th>
|
||||||
|
<th>처리상태<button type="button" class="sort sortBtn" id="sort_status"></button></th>
|
||||||
|
<th>등록일자<button type="button" class="sort sortBtn" id="sort_frstRegistPnttm"></button></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach var="list" items="${list}" varStatus="status">
|
||||||
|
<tr onclick="javascript:goTextSenseDetail('<c:out value="${list.id}"/>');" style="cursor:pointer;">
|
||||||
|
<td>
|
||||||
|
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
|
||||||
|
<c:out value="${ ( paginationInfo.totalRecordCount - ((searchVO.pageIndex -1)*searchVO.pageUnit) ) - status.index }"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
|
||||||
|
<c:out value="${(searchVO.pageIndex - 1) * searchVO.pageUnit + status.count}"/>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
<td><c:out value="${list.taskName}"/></td>
|
||||||
|
<td>
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${list.status eq 'AWAITING'}">
|
||||||
|
변환중
|
||||||
|
</c:when>
|
||||||
|
<c:when test="${list.status eq 'SUCCESS'}">
|
||||||
|
처리완료
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
처리실패
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</td>
|
||||||
|
<td><c:out value="${list.frstRegistPnttm}"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty list}">
|
||||||
|
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
|
||||||
|
</c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list -->
|
||||||
|
<div class="btn_wrap btn_layout02">
|
||||||
|
<button class="btnType02" onclick="fncTextSenseReg(); return false;">OCR 등록</button>
|
||||||
|
</div>
|
||||||
|
<!-- page -->
|
||||||
|
<div class="page">
|
||||||
|
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
|
||||||
|
</div>
|
||||||
|
<!-- //page -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //cont -->
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,285 @@
|
|||||||
|
<%--
|
||||||
|
Class Name : EgovTextSenseRegist.jsp
|
||||||
|
Description : TextSense 파일 등록화면
|
||||||
|
Modification Information
|
||||||
|
|
||||||
|
수정일 수정자 수정내용
|
||||||
|
------- -------- ---------------------------
|
||||||
|
2009.03.24 이삼섭 최초 생성
|
||||||
|
2011.08.31 JJY 경량환경 버전 생성
|
||||||
|
|
||||||
|
author : 공통서비스 개발팀 이삼섭
|
||||||
|
since : 2009.03.24
|
||||||
|
--%>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
|
||||||
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator"%>
|
||||||
|
<%@ taglib prefix="ckeditor" uri="http://ckeditor.com"%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta http-equiv="content-language" content="ko">
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovBBSMng.js' />"></script>
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovMultiFileItn.js'/>"></script> <!-- 파일첨부, 썸네일이미지 있으면 미리보기 -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
$( document ).ready(function() {
|
||||||
|
$(function () {
|
||||||
|
|
||||||
|
//화면 로딩시 제목 자동 생성
|
||||||
|
var today = new Date();
|
||||||
|
var year = today.getFullYear(); // 년도
|
||||||
|
var month = today.getMonth() + 1; // 월
|
||||||
|
var date = today.getDate(); // 날짜
|
||||||
|
|
||||||
|
var hours = today.getHours(); // 시
|
||||||
|
var minutes = today.getMinutes(); // 분
|
||||||
|
var milliseconds = today.getMilliseconds(); // 밀리초
|
||||||
|
|
||||||
|
var tkName = "TaskOcr_"+year.toString() + month.toString() + date.toString() + hours.toString() + minutes.toString() + milliseconds.toString();
|
||||||
|
|
||||||
|
$('#taskName').val(tkName);
|
||||||
|
|
||||||
|
$('#filebutton').click(function (e) {
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
$('#file_temp').click();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function goTextSenseList() {
|
||||||
|
location.href="/kccadr/textsence/selectTextSenseList.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
function fn_egov_regist() {
|
||||||
|
|
||||||
|
|
||||||
|
var form = document.textForm;
|
||||||
|
var data = new FormData(form);
|
||||||
|
//첨부파일 등록 처리
|
||||||
|
_fileForm2.forEach(function(obj, idx) {
|
||||||
|
if (obj) data.append("file"+idx, obj.fileObj);
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!confirm("OCR 처리 요청을 진행하시겠습니까?")) return false;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
enctype: 'multipart/form-data',
|
||||||
|
url: "/kccadr/textsence/textSenseRequestAjax.do",
|
||||||
|
data: data,
|
||||||
|
dataType:'json',
|
||||||
|
async: false,
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
cache: false,
|
||||||
|
success: function (returnData, status) {
|
||||||
|
if(status == 'success'){
|
||||||
|
var result = returnData.result;
|
||||||
|
|
||||||
|
if(result == 'loginFail'){
|
||||||
|
|
||||||
|
alert("로그인이 필요합니다.");
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}else if(result == 'success'){
|
||||||
|
|
||||||
|
alert("OCR 처리요청이 완료되었습니다. 감사합니다.");
|
||||||
|
goTextSenseList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(status== 'fail'){
|
||||||
|
alert("저장에 실패하였습니다.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function goList() {
|
||||||
|
document.searchForm.action = "<c:url value='/cop/bbs/selectBoardList.do'/>";
|
||||||
|
document.searchForm.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function fn_egov_regist_preview() {
|
||||||
|
var PCC_window = window.open('', 'PCCV3Window', 'width=850, height=570, resizable=1, scrollbars=yes, status=0, titlebar=0, toolbar=0, left=350, top=50' );
|
||||||
|
|
||||||
|
var previewImgs = "";
|
||||||
|
var i = 0;
|
||||||
|
|
||||||
|
$("#DIV_IMG_VIEW").find("img").each(function() {
|
||||||
|
previewImgs += $(this).get(0).src + "^";
|
||||||
|
i++;
|
||||||
|
});
|
||||||
|
|
||||||
|
document.board.previewImgs.value = previewImgs;
|
||||||
|
document.board.action = "<c:url value='/cop/bbs/bbsPreview.do'/>";
|
||||||
|
document.board.target = "PCCV3Window";
|
||||||
|
document.board.submit();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<title><c:out value='${bdMstr.bbsNm}' /> - 글 등록</title>
|
||||||
|
<style>
|
||||||
|
.uploaded_obj{width: 100%;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form id="textForm" name="textForm" method="post" enctype="multipart/form-data">
|
||||||
|
<!-- 드래그앤 드롭 파라미터 -->
|
||||||
|
<input type="hidden" name="limitcount" value="1" />
|
||||||
|
<!-- cont -->
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>OCR 등록 </h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home"><a href="/"><i></i></a></li>
|
||||||
|
<li>
|
||||||
|
<p>OCR관리</p>
|
||||||
|
</li>
|
||||||
|
<li><span class="cur_nav">등록</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_상세 -->
|
||||||
|
<div class="tbType02">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 80%">
|
||||||
|
</colgroup>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th><span class="reqArea">
|
||||||
|
<span class="reqArea">제목</span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<input type="text" id="taskName" name="taskName" value="" style="width:250px;" readonly/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="req_text">
|
||||||
|
<p>첨부파일</p>
|
||||||
|
</th>
|
||||||
|
<td class="upload_area">
|
||||||
|
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
|
||||||
|
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
|
||||||
|
<button type="button" id="filebutton" class="btnType01 btn_add_file">파일 첨부하기</button>
|
||||||
|
<div class="file_wrap file_upload_box no_img_box">
|
||||||
|
<table class="tbType02">
|
||||||
|
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 60%;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 20%;">
|
||||||
|
<col style="width: 10%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<!-- <th>
|
||||||
|
<input type="checkbox" id="all_check"><label for="all_check"></label>
|
||||||
|
</th> -->
|
||||||
|
<th>파일 명</th>
|
||||||
|
<th>종류</th>
|
||||||
|
<th>크기</th>
|
||||||
|
<th>삭제</th>
|
||||||
|
</thead>
|
||||||
|
<tbody class="tb_file_before">
|
||||||
|
<tr>
|
||||||
|
<td colspan="4">
|
||||||
|
<p>첨부하실 파일을 <span>마우스로 끌어서</span> 넣어주세요.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="file_wrap fileAfter file_list_div">
|
||||||
|
<table class="tbType02">
|
||||||
|
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 60%">
|
||||||
|
<col style="width: 10%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 10%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<!-- <th>
|
||||||
|
<input type="checkbox" id="all_check"><label for="all_check"></label>
|
||||||
|
</th> -->
|
||||||
|
<th>파일 명</th>
|
||||||
|
<th>종류</th>
|
||||||
|
<th>크기</th>
|
||||||
|
<th>삭제</th>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tbody_fiielist" class="tb_file_after">
|
||||||
|
<c:forEach var="fileList" items="${fileList}" varStatus="status">
|
||||||
|
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
|
||||||
|
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
|
||||||
|
<td class="td_filename">
|
||||||
|
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
|
||||||
|
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
|
||||||
|
</td>
|
||||||
|
<td class="td_filesort">
|
||||||
|
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
|
||||||
|
</td>
|
||||||
|
<td class="td_filesize">
|
||||||
|
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list_상세 -->
|
||||||
|
|
||||||
|
<!-- btn_wrap -->
|
||||||
|
<div class="btn_wrap btn_layout01">
|
||||||
|
<div class="area_left">
|
||||||
|
</div>
|
||||||
|
<div class="area_right">
|
||||||
|
<!-- <button class="btnType04" onclick="fn_egov_regist_preview(); return false;">미리보기</button> -->
|
||||||
|
<c:if test="${!empty fmsFileList[0].fmsId }">
|
||||||
|
<button class="btnType06" onclick="goSave('fmsFile_U'); return false;">수 정</button>
|
||||||
|
<button class="btnType06" onclick="fn_fmsfile_delete(); return false;">삭 제</button>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty fmsFileList[0].fmsId }">
|
||||||
|
<button class="btnType06" onclick="fn_egov_regist(); return false;">등 록</button>
|
||||||
|
</c:if>
|
||||||
|
<button class="btnType04" onclick="goTextSenseList(); return false;">목 록</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //btn_wrap -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //cont -->
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!-- //content 끝 -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user