itsm_ysm/src/main/java/kccf/sch/web/SearchController.java
2021-10-13 14:01:13 +09:00

766 lines
29 KiB
Java

package kccf.sch.web;
import static kccf.sch.common.WNDefine.CONNECTION_CLOSE;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kccf.res.service.ResourcesService;
import kccf.sch.common.WNSearch;
import kccf.sch.common.WNUtils;
import kccf.sch.service.ArkService;
import kccf.sch.service.PopWordService;
import kccf.sch.service.SearchCollectionResult;
import kccf.sch.service.SearchService;
import kccf.sch.service.vo.ArkVO;
import kccf.sch.service.vo.PopWordVO;
import kccf.sch.service.vo.SearchCollectionVO;
import kccf.sch.service.vo.SearchVO;
import kccf.sch.service.vo.Sf1VO;
import kccf.ton.service.LocalToonService;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import cmm.Constant;
import cmm.service.CmmActivityHstVO;
import cmm.service.CmmService;
import cmm.util.CmmUtil;
import cmm.util.DataMap;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import egovframework.com.cmm.ComDefaultCodeVO;
import egovframework.com.cmm.service.EgovCmmUseService;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
//추가
@Controller
public class SearchController {
/** LOGGER */
//@SuppressWarnings("unused")
private static final Logger LOGGER = LoggerFactory.getLogger(SearchController.class);
@Resource(name = "searchService")
private SearchService searchService;
@Resource(name = "nlibProperty")
protected NlibProperty nlibProperty;
@Resource(name="ArkService")
private ArkService arkService;
@Resource(name="PopwordService")
private PopWordService popWordService;
@Resource(name = "localToonService")
private LocalToonService localToonService;
/** CmmService */
@Resource(name = "cmmService")
private CmmService cmmService;
/** EgovCmmUseService */
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
/** resourcesService */
@Resource(name = "resourcesService")
private ResourcesService resourcesService;
@Resource(name = "codeService")
private CodeService codeService;
/**SEARCHLIST**/
@RequestMapping(value="/sch/totalSearchList.do")
public String totalSearchList (
@ModelAttribute("searchVO") SearchVO searchVO
, String all_totalCount
, String gubun
, String gubun_ajax
, ModelMap model
, HttpServletRequest request
, HttpServletResponse res
) throws Exception
{
try{
LOGGER.debug("[PATH][/sch/totalSearchList.do][searchVO][{}]",searchVO.toString());
//System.out.println("\n\n\n\n\n\n\n/*****************totalSearchList-searchVO.toString()********************/"+searchVO.toString());
searchVO.setRealQuery("한복");
searchVO.setQuery("한복");
searchVO.setCollection("reference_Coll");
// 검색관련 서버 설정
String searchIp = nlibProperty.getString("search.searchIp");
int searchPort = nlibProperty.getInt("search.searchPort");
int searchTimeOut = nlibProperty.getInt("search.searchTimeOut");
Sf1VO sf1Vo = new Sf1VO();
sf1Vo.setSearchIp(searchIp);
sf1Vo.setSearchPort(searchPort);
sf1Vo.setSearchTimeOut(searchTimeOut);
SearchCollectionResult collResult = searchService.getSearch(searchVO, sf1Vo);
all_totalCount = Integer.toString(searchService.getSearch_All_cnt(searchVO, sf1Vo));
// 결과
SearchCollectionVO collInfo = new SearchCollectionVO();
SearchCollectionVO collMap = new SearchCollectionVO();
SearchCollectionVO collNumber = new SearchCollectionVO();
SearchCollectionVO collPick = new SearchCollectionVO();
SearchCollectionVO collReferecne = new SearchCollectionVO();
SearchCollectionVO collStory = new SearchCollectionVO();
SearchCollectionVO collCulturePost = new SearchCollectionVO();
SearchCollectionVO collCulturePostHot = new SearchCollectionVO();
SearchCollectionVO collTotal = new SearchCollectionVO();
SearchCollectionVO collToon = new SearchCollectionVO();
int totalCount = 0;
int page_totalCount =0;
ArrayList<SearchCollectionVO> collList = collResult.getCollectionList();
int collListSize = collList.size();
for(int i = 0 ; i < collListSize ; i++){
SearchCollectionVO coll = collList.get(i);
String collEn = coll.getCollectionName();
if(collEn.indexOf("culturePostHot") < 0 && collEn.indexOf("total") < 0 && collEn.indexOf("_cate") < 0){
totalCount = totalCount + coll.getTotalCount();
}
if( !searchVO.getCollection().equals("ALL") && searchVO.getCollection().indexOf("_Coll") >= 0){
if(searchVO.getCollection().replace("_Coll", "").equals(collEn)){
page_totalCount = coll.getTotalCount();
}
}
if(collEn.equals("info")){
collInfo = coll;
}
else if(collEn.equals("map")){
collMap = coll;
}
else if(collEn.equals("number")){
collNumber = coll;
}
else if(collEn.equals("pick")){
collPick = coll;
}
else if(collEn.equals("reference")){
collReferecne = coll;
for(int j = 0 ; j < collReferecne.getSearchResultList().size() ; j++){
Map<Object ,Object> mapResult = collReferecne.getSearchResultList().get(j);
DataMap paramMap = new DataMap();
paramMap.put("mId", mapResult.get("MEDIA_ID"));
if(StringUtils.isNotEmpty(mapResult.get("MEDIA_ID").toString())){
DataMap media = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
String url="";
/*String mediaId = media.getString("mid");
String mediaInterfaceId = media.getString("interfaceId");
String url = "";
if (StringUtils.isNotEmpty(mediaInterfaceId)) { // mediaInterfaceId가 존재할 경우만 URL 정보 생성
if(media.get("assetType") != null){
if(media.get("assetType").toString().equals("문서") ){
url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/npdfView.do?";
url += "npdf="+Constant.UA_TYPE_R+mediaInterfaceId; // MEDIA 의 INTERFACE_ID 사용
}else if(media.get("assetType").toString().equals("링크")){
url = media.get("linkData").toString();
}else{
url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/lib/libraryDetail.do?contentId="+mediaId;
url += "&rfType="+Constant.UA_TYPE_R; // 히스토리 등록 시 사용
}
}
}*/
mapResult.put("LINK_URL", url);
}
}
}
else if(collEn.equals("story")){
collStory = coll;
}
else if(collEn.equals("culturePost")){
collCulturePost = coll;
}
else if(collEn.equals("total")){
collTotal = coll;
}
else if(collEn.equals("total_tags")){
model.addAttribute("total_tags", coll);
}
else if(collEn.indexOf("_cate") >= 0){ //cate
if(collEn.equals("first_class_cate")){
model.addAttribute("first_class_cate", coll);
}
else if(collEn.equals("second_class_cate")){
model.addAttribute("second_class_cate", coll);
}
else if(collEn.equals("first_council_cate")){
model.addAttribute("first_council_cate", coll);
}
else if(collEn.equals("second_council_cate")){
model.addAttribute("second_council_cate", coll);
}
else if(collEn.equals("first_category_cate")){
model.addAttribute("first_category_cate", coll);
}
else if(collEn.equals("second_category_cate")){
model.addAttribute("second_category_cate", coll);
}
else if(collEn.equals("first_theme_cate")){
model.addAttribute("first_theme_cate", coll);
}
else if(collEn.equals("second_theme_cate")){
model.addAttribute("second_theme_cate", coll);
}
}
else if(collEn.indexOf("culturePostHot") >= 0){ //cate
if(collEn.equals("culturePostHot")){
collCulturePostHot = coll;
}
else if(collEn.equals("culturePostHot_keywords")){
model.addAttribute("culturePostHot_keywords", coll);
}
else if(collEn.equals("culturePostHot_tags")){
model.addAttribute("culturePostHot_tags", coll);
}
}
}
// - 값 (검색엔진 오류 일때 0값 으로 )
if(totalCount < 0){
totalCount = 0;
}
model.addAttribute("totalCount",totalCount);
model.addAttribute("info", collInfo);
model.addAttribute("map", collMap);
model.addAttribute("number", collNumber);
model.addAttribute("pick", collPick);
model.addAttribute("reference", collReferecne);
model.addAttribute("story", collStory);
model.addAttribute("culturePost", collCulturePost);
model.addAttribute("culturePostHot", collCulturePostHot);
model.addAttribute("total", collTotal);
model.addAttribute("all_totalCount",all_totalCount);
model.addAttribute("toon",collToon);
// 경로
CmmUtil.setNfsPathModelMap(request,model);
// 페이징 관련
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getStartCount());
if(searchVO.getCollection().indexOf("toon") >= 0){
if(searchVO.getViewCount() == 10){
paginationInfo.setRecordCountPerPage(12);
}else{
paginationInfo.setRecordCountPerPage(searchVO.getViewCount());
}
}else{
paginationInfo.setRecordCountPerPage(searchVO.getViewCount());
}
paginationInfo.setPageSize((CmmUtil.isMobile(request)) ? 5 :10);
//paginationInfo.setTotalRecordCount(totalCount);
paginationInfo.setTotalRecordCount(searchVO.getCollection().equals("ALL") || searchVO.getCollection().equals("") ? totalCount :page_totalCount );
model.addAttribute("paginationInfo", paginationInfo);
//serviceVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
//serviceVO.setLastIndex(paginationInfo.getLastRecordIndex());
//serviceVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
model.addAttribute("searchVO", searchVO);
//System.out.println("\n\n\n\n\n\n\n/*****************totalSearchList-searchVO.toString()********************/"+searchVO.toString());
}catch(Exception e){
e.printStackTrace();
}
String resultUrl ="";
//자료유형
model.addAttribute("firstClassList", codeService.listCodes(Constant.CODE_ID_MASTER_TYPE_DIV_CD));
model.addAttribute("secondClassList", codeService.listCodes(Constant.CODE_ID_DTLS_TYPE_DIV_CD));
List<DataMap> councilList = resourcesService.selectCouncilList();
model.addAttribute("councilList", councilList);
resultUrl = "nlib/collection/searchReferenceListAjax";
//System.out.println("\n\n\n\n\n################################gubun_ajax:"+searchVO.getCollection()+"/"+gubun_ajax+"/"+resultUrl);
// ams 서버 패스 정보
CmmUtil.setAmsPathModelMap(request,model);
searchVO.setQuery(searchVO.getQuery().replaceAll("\\\"", "&quot;"));
searchVO.setExactQuery(searchVO.getExactQuery().replaceAll("\\\"", "&quot;"));
return resultUrl;
}
/** POPWORD */
@RequestMapping(value="/sch/popword.do")
public String popword(@ModelAttribute("PopWordVO") PopWordVO popWordVo, ModelMap model) throws Exception {
String popWordStr = "";
String managerIp = nlibProperty.getString("search.managerIp");
int managerPort = nlibProperty.getInt("search.managerPort");
Sf1VO sf1Vo = new Sf1VO();
sf1Vo.setManagerIp(managerIp);
sf1Vo.setManagerPort(managerPort);
popWordStr = popWordService.getPopWord(popWordVo, sf1Vo);
model.addAttribute("popWordStr", popWordStr);
return "kccf/sch/popword/popword.kccf-sch";
}
/** ARK */
@RequestMapping(value="/sch/ark.do")
public String ark(@ModelAttribute("ArkVO") ArkVO arkVO, ModelMap model) throws Exception {
String arkStr = "";
String managerIp = nlibProperty.getString("search.managerIp");
int managerPort = nlibProperty.getInt("search.managerPort") ;
Sf1VO sf1Vo = new Sf1VO();
sf1Vo.setManagerIp(managerIp);
sf1Vo.setManagerPort(managerPort);
arkStr = arkService.getArk(arkVO, sf1Vo);
model.addAttribute("arkStr", arkStr);
return "kccf/sch/ark/ark.kccf-sch";
}
@RequestMapping(value="/sch/totalSearchList_ajax.do")
public String totalSearchList_ajax (
@ModelAttribute("searchVO") SearchVO searchVO
, String all_totalCount
, String gubun
, ModelMap model
, HttpServletRequest request
,HttpServletResponse res
) throws Exception
{
try{
LOGGER.debug("[PATH][/sch/totalSearchList.do][searchVO][{}]",searchVO.toString());
//System.out.println("\n\n\n\n\n\n\n/*****************totalSearchList-searchVO.toString()********************/"+searchVO.toString());
// 검색관련 서버 설정
String searchIp = nlibProperty.getString("search.searchIp");
int searchPort = nlibProperty.getInt("search.searchPort");
int searchTimeOut = nlibProperty.getInt("search.searchTimeOut");
Sf1VO sf1Vo = new Sf1VO();
sf1Vo.setSearchIp(searchIp);
sf1Vo.setSearchPort(searchPort);
sf1Vo.setSearchTimeOut(searchTimeOut);
SearchCollectionResult collResult = searchService.getSearch(searchVO, sf1Vo);
if(gubun.equals("1")){ //&&(searchVO.getCollection().equals("ALL") || searchVO.getCollection().equals(""))
all_totalCount = Integer.toString(searchService.getSearch_All_cnt(searchVO, sf1Vo));
// all_totalCount = Integer.toString(collResult_all_cnt);
// System.out.println("################################"+searchVO.getCollection()+"/"+all_totalCount+"/"+gubun);
}else {
all_totalCount = Integer.toString(searchService.getSearch_All_cnt(searchVO, sf1Vo)); //2019-11-27 gubun??
// System.out.println("else ################################:"+searchVO.getCollection()+"/"+all_totalCount+"/"+gubun);
}
//System.out.println("\n\n\n\n\n################################gubun_ajax:"+searchVO.getCollection()+"/"+gubun_ajax);
// 결과
SearchCollectionVO collInfo = new SearchCollectionVO();
SearchCollectionVO collMap = new SearchCollectionVO();
SearchCollectionVO collNumber = new SearchCollectionVO();
SearchCollectionVO collPick = new SearchCollectionVO();
SearchCollectionVO collReferecne = new SearchCollectionVO();
SearchCollectionVO collStory = new SearchCollectionVO();
SearchCollectionVO collCulturePost = new SearchCollectionVO();
SearchCollectionVO collCulturePostHot = new SearchCollectionVO();
SearchCollectionVO collTotal = new SearchCollectionVO();
SearchCollectionVO collToon = new SearchCollectionVO();
int totalCount = 0;
int page_totalCount =0;
ArrayList<SearchCollectionVO> collList = collResult.getCollectionList();
int collListSize = collList.size();
for(int i = 0 ; i < collListSize ; i++){
SearchCollectionVO coll = collList.get(i);
String collEn = coll.getCollectionName();
if(collEn.indexOf("culturePostHot") < 0 && collEn.indexOf("total") < 0 && collEn.indexOf("_cate") < 0){
totalCount = totalCount + coll.getTotalCount();
}
if( !searchVO.getCollection().equals("ALL") && searchVO.getCollection().indexOf("_Coll") >= 0){
if(searchVO.getCollection().replace("_Coll", "").equals(collEn)){
page_totalCount = coll.getTotalCount();
}
}
if(collEn.equals("info")){
collInfo = coll;
}
else if(collEn.equals("map")){
collMap = coll;
}
else if(collEn.equals("number")){
collNumber = coll;
}
else if(collEn.equals("pick")){
collPick = coll;
}
else if(collEn.equals("reference")){
collReferecne = coll;
for(int j = 0 ; j < collReferecne.getSearchResultList().size() ; j++){
Map<Object ,Object> mapResult = collReferecne.getSearchResultList().get(j);
DataMap paramMap = new DataMap();
paramMap.put("mId", mapResult.get("MEDIA_ID"));
if(StringUtils.isNotEmpty(mapResult.get("MEDIA_ID").toString())){
DataMap media = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
String mediaId = media.getString("id");
String mediaInterfaceId = media.getString("interfaceId");
String url = "";
if (StringUtils.isNotEmpty(mediaInterfaceId)) { // mediaInterfaceId가 존재할 경우만 URL 정보 생성
if(media.get("assetType") != null){
if(media.get("assetType").toString().equals("문서") ){
url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/npdfView.do?";
url += "npdf="+Constant.UA_TYPE_R+mediaInterfaceId; // MEDIA 의 INTERFACE_ID 사용
}else if(media.get("assetType").toString().equals("링크")){
url = media.get("linkData").toString();
}else{
url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/lib/libraryDetail.do?contentId="+mediaId;
url += "&rfType="+Constant.UA_TYPE_R; // 히스토리 등록 시 사용
}
}
}
mapResult.put("LINK_URL", url);
}
}
}
else if(collEn.equals("story")){
collStory = coll;
}
else if(collEn.equals("culturePost")){
collCulturePost = coll;
}
else if(collEn.equals("total")){
collTotal = coll;
}
else if(collEn.equals("total_tags")){
model.addAttribute("total_tags", coll);
}
else if(collEn.indexOf("_cate") >= 0){ //cate
if(collEn.equals("first_class_cate")){
model.addAttribute("first_class_cate", coll);
}
else if(collEn.equals("second_class_cate")){
model.addAttribute("second_class_cate", coll);
}
else if(collEn.equals("first_council_cate")){
model.addAttribute("first_council_cate", coll);
}
else if(collEn.equals("second_council_cate")){
model.addAttribute("second_council_cate", coll);
}
else if(collEn.equals("first_category_cate")){
model.addAttribute("first_category_cate", coll);
}
else if(collEn.equals("second_category_cate")){
model.addAttribute("second_category_cate", coll);
}
else if(collEn.equals("first_theme_cate")){
model.addAttribute("first_theme_cate", coll);
}
else if(collEn.equals("second_theme_cate")){
model.addAttribute("second_theme_cate", coll);
}
}
else if(collEn.indexOf("culturePostHot") >= 0){ //cate
if(collEn.equals("culturePostHot")){
collCulturePostHot = coll;
}
else if(collEn.equals("culturePostHot_keywords")){
model.addAttribute("culturePostHot_keywords", coll);
}
else if(collEn.equals("culturePostHot_tags")){
model.addAttribute("culturePostHot_tags", coll);
}
}
else if(collEn.indexOf("toon") >= 0){
if(collEn.equals("toon")){
collToon = coll;
}
else if(collEn.equals("toon_tags")){
model.addAttribute("toon_tags", coll);
}
// 최근열람툰
CmmActivityHstVO cmmActivityHstVO = new CmmActivityHstVO();
cmmActivityHstVO.setTargetId(CmmUtil.getCookieId(request));
cmmActivityHstVO.setUaType(Constant.UA_TYPE_W);
cmmActivityHstVO.setActivityType(Constant.ACTIVITY_TYPE_O);
cmmActivityHstVO.setContentType(Constant.CONTENT_TYPE_T);
model.addAttribute("openPageList", localToonService.selectLocalToonOpenPageList(cmmActivityHstVO));
model.addAttribute("openPageHotList", localToonService.selectLocalToonOpenPageHotList(cmmActivityHstVO));
}
}
// - 값 (검색엔진 오류 일때 0값 으로 )
if(totalCount < 0){
totalCount = 0;
}
model.addAttribute("totalCount",totalCount);
model.addAttribute("info", collInfo);
model.addAttribute("map", collMap);
model.addAttribute("number", collNumber);
model.addAttribute("pick", collPick);
model.addAttribute("reference", collReferecne);
model.addAttribute("story", collStory);
model.addAttribute("culturePost", collCulturePost);
model.addAttribute("culturePostHot", collCulturePostHot);
model.addAttribute("total", collTotal);
model.addAttribute("all_totalCount",all_totalCount);
model.addAttribute("toon",collToon);
// 경로
CmmUtil.setNfsPathModelMap(request,model);
// 페이징 관련
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getStartCount());
if(searchVO.getCollection().indexOf("toon") >= 0){
if(searchVO.getViewCount() == 10){
paginationInfo.setRecordCountPerPage(12);
}else{
paginationInfo.setRecordCountPerPage(searchVO.getViewCount());
}
}else{
paginationInfo.setRecordCountPerPage(searchVO.getViewCount());
}
paginationInfo.setPageSize((CmmUtil.isMobile(request)) ? 5 :10);
//paginationInfo.setTotalRecordCount(totalCount);
paginationInfo.setTotalRecordCount(searchVO.getCollection().equals("ALL") || searchVO.getCollection().equals("") ? totalCount :page_totalCount );
model.addAttribute("paginationInfo", paginationInfo);
//serviceVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
//serviceVO.setLastIndex(paginationInfo.getLastRecordIndex());
//serviceVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
model.addAttribute("searchVO", searchVO);
//System.out.println("\n\n\n\n\n\n\n/*****************totalSearchList-searchVO.toString()********************/"+searchVO.toString());
}catch(Exception e){
e.printStackTrace();
}
String resultUrl ="";
/*if(searchVO.getCollection().equals("ALL") || searchVO.getCollection().equals("")){
resultUrl = "kccf/sch/totalSearchList.kccf";
}else if(searchVO.getCollection().equals("pick_Coll")){
resultUrl = "kccf/sch/searchPickList.kccf";
}else if(searchVO.getCollection().equals("culturePost_Coll")){
resultUrl = "kccf/sch/searchCulturePostList.kccf";
}else if(searchVO.getCollection().equals("number_Coll")){
resultUrl = "kccf/sch/searchNumberList.kccf";
}else if(searchVO.getCollection().equals("story_Coll")){
resultUrl = "kccf/sch/searchStoryList.kccf";
}else if(searchVO.getCollection().equals("reference_Coll")){
resultUrl = "kccf/sch/searchReferenceList.kccf";
}else if(searchVO.getCollection().equals("info_Coll")){
resultUrl = "kccf/sch/searchInfoList.kccf";
}*/
ComDefaultCodeVO CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS014);
model.addAttribute("firstCategoryList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS015);
model.addAttribute("secondCategoryList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS004);
model.addAttribute("themaList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS005);
model.addAttribute("seriesList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_MASTER_TYPE_DIV_CD);
model.addAttribute("firstClassList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_DTLS_TYPE_DIV_CD);
model.addAttribute("secondClassList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS016);
model.addAttribute("contentTypeList", cmmUseService.selectCmmCodeDetail(CodeVO));
CodeVO = new ComDefaultCodeVO();
CodeVO.setCodeId(Constant.CODE_ID_FMS018);
model.addAttribute("couSidoList", cmmUseService.selectCmmCodeDetail(CodeVO));
List<DataMap> councilList = resourcesService.selectCouncilList();
model.addAttribute("councilList", councilList);
if(searchVO.getCollection().equals("ALL") || searchVO.getCollection().equals("")){
resultUrl = "kccf/sch/totalSearchListAjax";
}else if(searchVO.getCollection().equals("pick_Coll")){
resultUrl = "kccf/sch/searchPickListAjax";
}else if(searchVO.getCollection().equals("culturePost_Coll")){
resultUrl = "kccf/sch/searchCulturePostList";
}else if(searchVO.getCollection().equals("number_Coll")){
resultUrl = "kccf/sch/searchNumberListAjax";
}else if(searchVO.getCollection().equals("story_Coll")){
resultUrl = "kccf/sch/searchStoryListAjax";
}else if(searchVO.getCollection().equals("reference_Coll")){
resultUrl = "kccf/sch/searchReferenceListAjax";
}else if(searchVO.getCollection().equals("info_Coll")){
resultUrl = "kccf/sch/searchInfoListAjax";
}else if(searchVO.getCollection().equals("toon_Coll")){
resultUrl = "kccf/sch/searchToonListAjax";
}
//System.out.println("\n\n\n\n\n################################gubun_ajax:"+searchVO.getCollection()+"/"+gubun_ajax+"/"+resultUrl);
// ams 서버 패스 정보
CmmUtil.setAmsPathModelMap(request,model);
searchVO.setQuery(searchVO.getQuery().replaceAll("\\\"", "&quot;"));
searchVO.setExactQuery(searchVO.getExactQuery().replaceAll("\\\"", "&quot;"));
return resultUrl;
}
/**
* OCR문서의 몇번째 문서인지 리턴하기 위한 api
* reference.js 에서 function reference_viewOcr(mediaId, query)로 호출
* @param request
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value="/sch/getOcrId.do")
public String getOcrId (HttpServletRequest request, ModelMap model ) throws Exception {
//디버깅 보기 설정
boolean isDebug = false;
String exquery = ""; // exquery 조건 필드
String jsonStr = "";
int startCount = 0; //보여줄 페이지 번호
String strOperation ="";
int viewResultCount = WNUtils.parseInt(WNUtils.getCheckReqXSS(request, "LISTCOUNT", "1"), 1); // 출력건수
String sort = WNUtils.getCheckReqXSS(request, "SORT", "ID"); // 정렬방식
String sortOrder = WNUtils.getCheckReqXSS(request, "SORTORDER", "ASC"); // 정렬방식
String collection = WNUtils.getCheckReqXSS(request, "COLLECTION", "ocr"); // 컬랙션
String media_id = WNUtils.getCheckReqXSS(request, "MEDIA_ID", ""); // 메뉴
String query = WNUtils.getCheckReqXSS(request, "query", "");
String[] collections = null;
if(collection.equals("ALL")) { //통합검색인 경우
collections = new String[]{"info","map","number","pick","reference","story","culturePost","total","toon"}; //COLLECTIONS;
} else { //개별검색인 경우
collections = new String[] { collection };
}
exquery += "<MEDIA_ID:contains:" + media_id + ">";
// 검색관련 서버 설정
String searchIp = nlibProperty.getString("search.searchIp");
int searchPort = nlibProperty.getInt("search.searchPort");
int searchTimeOut = nlibProperty.getInt("search.searchTimeOut");
Sf1VO sf1Vo = new Sf1VO();
sf1Vo.setSearchIp(searchIp);
sf1Vo.setSearchPort(searchPort);
sf1Vo.setSearchTimeOut(searchTimeOut);
WNSearch wnsearch = new WNSearch(isDebug, false, collections, null);
// WNSearch wnsearch = new WNSearch(isDebug, false, collections, null, WNDefine.USE_RESULT_JSON);
wnsearch.setSf1Vo(sf1Vo);
wnsearch.set(query, "ALL", viewResultCount, startCount, sort, sortOrder, strOperation, exquery, "1970.01.01", WNUtils.getCurrentDate());
wnsearch.search(query, false, CONNECTION_CLOSE, true, sf1Vo.getSearchIp(), sf1Vo.getSearchPort());
String debugMsg = wnsearch.printDebug() != null ? wnsearch.printDebug().trim() : "";
int min = viewResultCount;
if(wnsearch.getResultTotalCount("ocr") < viewResultCount){
min = wnsearch.getResultTotalCount("ocr"); //가장 적은 수로 결과를 리턴
}
Gson gson = new Gson();
JsonArray doc = new JsonArray();
String[] fields = {"ID","MEDIA_ID","FIRST_PAGE_NUM","LAST_PAGE_NUM","ORDER_NUM","FILE_NAME"};
for(int idx =0 ; idx < min; idx++){
JsonObject obj = new JsonObject();
for(String field : fields){
obj.addProperty(field, wnsearch.getField("ocr", field, idx, false));
}
doc.add(obj);
}
jsonStr = gson.toJson(doc);
// jsonStr = wnsearch.getResultJson();
model.addAttribute("jsonStr", jsonStr);
model.addAttribute("isDebug", isDebug); //디버그메시지출력여부
model.addAttribute("debugMsg", debugMsg); //디버그 메시지 출력
if ( wnsearch != null )
wnsearch.closeServer();
return "kccf/sch/ocr/schOcrRetrunId.kccf-sch";
}
}