1748 lines
70 KiB
Java
1748 lines
70 KiB
Java
package cmm.web;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.BufferedOutputStream;
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.net.HttpURLConnection;
|
|
import java.net.URL;
|
|
import java.net.URLEncoder;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.PatternSyntaxException;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import kccf.res.service.ResourcesService;
|
|
import kccf.sch.service.vo.SearchVO;
|
|
|
|
import org.apache.commons.io.FilenameUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.json.JSONObject;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.ModelMap;
|
|
import org.springframework.util.FileCopyUtils;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import cmm.Constant;
|
|
import cmm.service.CmmAmsDocTableOfContentsVO;
|
|
import cmm.service.CmmApiService;
|
|
import cmm.service.CmmFileService;
|
|
import cmm.service.CmmService;
|
|
import cmm.service.ExtService;
|
|
import cmm.service.FileDetailVO;
|
|
import cmm.util.CmmUtil;
|
|
import cmm.util.CmmVO;
|
|
import cmm.util.DataMap;
|
|
import cmm.util.MessageAlertUtil;
|
|
import egovframework.com.cmm.ComDefaultCodeVO;
|
|
//import egovframework.com.cmm.EgovMessageSource;
|
|
import egovframework.com.cmm.service.EgovCmmUseService;
|
|
import egovframework.rte.fdl.cmmn.exception.EgovBizException;
|
|
import egovframework.rte.fdl.property.EgovPropertyService;
|
|
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
|
|
|
/**
|
|
* @Class Name : CmmController.java
|
|
* @author ecplaza
|
|
* @since 2018-04-17
|
|
* @version 1.0
|
|
*/
|
|
@Controller
|
|
public class CmmController {
|
|
/** LOGGER */
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(CmmController.class);
|
|
|
|
/** EgovPropertyService */
|
|
@Resource(name = "propertiesService")
|
|
protected EgovPropertyService propertiesService;
|
|
|
|
// @Resource(name="egovMessageSource")
|
|
// EgovMessageSource egovMessageSource;
|
|
//
|
|
@Resource(name = "cmmFileService")
|
|
private CmmFileService cmmFileService;
|
|
|
|
/** extService */
|
|
@Resource(name = "extService")
|
|
private ExtService extService;
|
|
|
|
/** cmmApiService */
|
|
@Resource(name = "cmmApiService")
|
|
private CmmApiService cmmApiService;
|
|
|
|
/** cmmService */
|
|
@Resource(name = "cmmService")
|
|
private CmmService cmmService;
|
|
|
|
/** EgovCmmUseService */
|
|
@Resource(name = "EgovCmmUseService")
|
|
private EgovCmmUseService cmmUseService;
|
|
|
|
/** resourcesService */
|
|
@Resource(name = "resourcesService")
|
|
private ResourcesService resourcesService;
|
|
|
|
@RequestMapping(value="/cmm/downloadFile.do")
|
|
public void cvplFileDownload(HttpServletRequest request, HttpServletResponse response) throws IOException, EgovBizException {
|
|
|
|
String atchFileId = request.getParameter("atchFileId");
|
|
String fileSn = request.getParameter("fileSn");
|
|
|
|
FileDetailVO paramVO = new FileDetailVO();
|
|
paramVO.setAtchFileId(atchFileId);
|
|
paramVO.setFileSn(fileSn);
|
|
FileDetailVO fileDetailVO = cmmFileService.selectFileDetail(paramVO);
|
|
|
|
File uFile = new File(fileDetailVO.getFileStreCours(), fileDetailVO.getStreFileNm());
|
|
long fSize = uFile.length();
|
|
|
|
if (fSize > 0) {
|
|
String mimetype = "application/x-msdownload";
|
|
|
|
response.setContentType(mimetype);
|
|
setDisposition(fileDetailVO.getOrignlFileNm(), request, response);
|
|
//response.setContentLength(fSize);
|
|
|
|
BufferedInputStream in = null;
|
|
FileInputStream fis = null;
|
|
BufferedOutputStream out = null;
|
|
|
|
try {
|
|
|
|
fis = new FileInputStream(uFile);
|
|
in = new BufferedInputStream(fis);
|
|
out = new BufferedOutputStream(response.getOutputStream());
|
|
|
|
FileCopyUtils.copy(in, out);
|
|
out.flush();
|
|
} catch (IOException ioe) {
|
|
LOGGER.error("Error in cvplFileDownload()", ioe);
|
|
} catch (NullPointerException npe) {
|
|
LOGGER.error("Error in cvplFileDownload()", npe);
|
|
} finally {
|
|
if (fis != null) {
|
|
try {
|
|
fis.close();
|
|
} catch (IOException ioe) {
|
|
LOGGER.error("Error in cvplFileDownload()", ioe);
|
|
}
|
|
}
|
|
if (in != null) {
|
|
try {
|
|
in.close();
|
|
} catch (IOException ioe) {
|
|
LOGGER.error("Error in cvplFileDownload()", ioe);
|
|
}
|
|
}
|
|
if (out != null) {
|
|
try {
|
|
out.close();
|
|
} catch (IOException ioe) {
|
|
LOGGER.error("Error in cvplFileDownload()", ioe);
|
|
}
|
|
}
|
|
}
|
|
|
|
} else {
|
|
MessageAlertUtil.alertBack("파일이 존재하지 않습니다." , response);
|
|
}
|
|
}
|
|
|
|
@RequestMapping("/cmm/selectIconFileDownLoad.do")
|
|
public String selectIconFileDownLoad(@ModelAttribute("searchVO") FileDetailVO fileVO, @RequestParam Map<String, Object> commandMap, ModelMap model) throws IOException, EgovBizException {
|
|
String atchFileId = (String)commandMap.get("param_atchFileId");
|
|
List<FileDetailVO> result = cmmFileService.selectIconFileDownLoad(atchFileId);
|
|
model.addAttribute("fileList", result);
|
|
model.addAttribute("fileListCnt", result.size());
|
|
model.addAttribute("atchFileId", atchFileId);
|
|
return "kdm/cmm/cmmIconFileList";
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmSigunguList.do")
|
|
public ModelAndView selectCmmSigunguList(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
model.addAttribute("resultList", extService.selectExtSigunguList(paramMap));
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmSigunguList2.do")
|
|
public ModelAndView selectCmmSigunguList2(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
model.addAttribute("resultList", extService.selectExtSigunguList2(paramMap));
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmGisSigunguList.do")
|
|
public ModelAndView selectCmmGisSigunguList(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
model.addAttribute("resultList", extService.selectExtGisSigunguList(paramMap));
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmGisSigunguList2.do")
|
|
public ModelAndView selectCmmGisSigunguList2(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
model.addAttribute("resultList", extService.selectExtGisSigunguList(paramMap));
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmGisDongList.do")
|
|
public ModelAndView selectCmmGisDongList(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
model.addAttribute("resultList", extService.selectExtGisDongList(paramMap));
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmJusoCheck.do")
|
|
public ModelAndView jusoCheck(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws EgovBizException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
String addr = paramMap.getString("localSido") + " " + paramMap.getString("localSigungu") + " " + paramMap.getString("localDong");
|
|
paramMap.clear();
|
|
paramMap.setString("juso", addr);
|
|
DataMap rtnMap = cmmApiService.getNaverApiJuso(paramMap);
|
|
model.addAttribute("resultData", rtnMap);
|
|
|
|
return modelAndView;
|
|
}
|
|
@RequestMapping(value="/cmm/cmmPscHstTotCnt.do")
|
|
public void selectCmmPscHstTotCnt(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws IOException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
String successYn = "N";
|
|
|
|
int cnt = 0;
|
|
try {
|
|
cnt = cmmService.selectCmmPscHstTotCnt(paramMap);
|
|
successYn = "Y";
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in selectCmmPscHstTotCnt()", e);
|
|
}
|
|
|
|
JSONObject jsonObj = new JSONObject();
|
|
jsonObj.put("successYn", successYn);
|
|
jsonObj.put("cnt", cnt);
|
|
|
|
|
|
response.setContentType("text/html; charset=utf-8");
|
|
response.setDateHeader("Expires", -1);
|
|
response.setHeader("Pragma", "no-cahce");
|
|
response.setHeader("Cache-Control", "no-store"); // HTTP 1.0
|
|
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
|
|
|
|
response.getWriter().write(jsonObj.toString());
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/regCmmPscHst.do")
|
|
public void insertCmmPscHst(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws IOException{
|
|
DataMap paramMap1 = DataMap.getParamMap(request);
|
|
DataMap paramMap2 = DataMap.getParamMap(request);
|
|
DataMap paramMap3 = DataMap.getParamMap(request);
|
|
|
|
paramMap1.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap1.setString("sidoName", paramMap1.getString("localSido1"));
|
|
paramMap1.setString("sigunguName", paramMap1.getString("localSigungu1"));
|
|
|
|
paramMap2.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap2.setString("sidoName", paramMap2.getString("localSido2"));
|
|
paramMap2.setString("sigunguName", paramMap2.getString("localSigungu2"));
|
|
|
|
paramMap3.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap3.setString("sidoName", paramMap3.getString("localSido3"));
|
|
paramMap3.setString("sigunguName", paramMap3.getString("localSigungu3"));
|
|
|
|
String successYn = "N";
|
|
String addr = "";
|
|
|
|
try {
|
|
|
|
addr = paramMap1.getString("localSido1") + "|" + paramMap1.getString("localSigungu1") + "^";
|
|
addr = addr + paramMap2.getString("localSido2") + "|" + paramMap2.getString("localSigungu2") + "^";
|
|
addr = addr + paramMap3.getString("localSido3") + "|" + paramMap3.getString("localSigungu3");
|
|
|
|
paramMap1.setInt("sortOrdr", 1);
|
|
if(cmmService.selectCmmPscHstTotCnt(paramMap1)>0){
|
|
cmmService.updateCmmPscHst(paramMap1);
|
|
}else{
|
|
cmmService.insertCmmPscHst(paramMap1);
|
|
}
|
|
|
|
paramMap2.setInt("sortOrdr", 2);
|
|
if(cmmService.selectCmmPscHstTotCnt(paramMap2)>0){
|
|
cmmService.updateCmmPscHst(paramMap2);
|
|
}else{
|
|
cmmService.insertCmmPscHst(paramMap2);
|
|
}
|
|
|
|
paramMap3.setInt("sortOrdr", 3);
|
|
if(cmmService.selectCmmPscHstTotCnt(paramMap3)>0){
|
|
cmmService.updateCmmPscHst(paramMap3);
|
|
}else{
|
|
cmmService.insertCmmPscHst(paramMap3);
|
|
}
|
|
|
|
CmmUtil.removeCookie(request, response, CmmUtil.getCookie(request, propertiesService.getString("kccf.cookie.addr.key")));
|
|
//CmmUtil.removeCookie(request, response, CmmUtil.getCookie(request, propertiesService.getString("kccf.cookie.pscType.key")));
|
|
CmmUtil.setEncoderCookie(response, propertiesService.getString("kccf.cookie.addr.key"), addr);
|
|
//CmmUtil.setEncoderCookie(response, propertiesService.getString("kccf.cookie.pscType.key"), paramMap.getString("pscType"));
|
|
|
|
successYn = "Y";
|
|
} catch (PatternSyntaxException ex1) {
|
|
LOGGER.error("Error in insertCmmPscHst()", ex1);
|
|
} catch (EgovBizException ex2) {
|
|
LOGGER.error("Error in insertCmmPscHst()", ex2);
|
|
}
|
|
|
|
JSONObject jsonObj = new JSONObject();
|
|
jsonObj.put("successYn", successYn);
|
|
|
|
|
|
response.setContentType("text/html; charset=utf-8");
|
|
response.setDateHeader("Expires", -1);
|
|
response.setHeader("Pragma", "no-cahce");
|
|
response.setHeader("Cache-Control", "no-store"); // HTTP 1.0
|
|
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
|
|
|
|
response.getWriter().write(jsonObj.toString());
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/regCmmPscHst-data.do")
|
|
public String insertCmmPscHstAjax(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws IOException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap.setString("sidoName", paramMap.getString("localSido"));
|
|
paramMap.setString("sigunguName", paramMap.getString("localSigungu"));
|
|
|
|
String addr = "";
|
|
try {
|
|
|
|
addr = paramMap.getString("localSido") + "|" + paramMap.getString("localSigungu");
|
|
if(cmmService.selectCmmPscHstTotCnt(paramMap)>0){
|
|
cmmService.updateCmmPscHst(paramMap);
|
|
}else{
|
|
cmmService.insertCmmPscHst(paramMap);
|
|
}
|
|
|
|
CmmUtil.removeCookie(request, response, CmmUtil.getCookie(request, propertiesService.getString("kccf.cookie.addr.key")));
|
|
CmmUtil.removeCookie(request, response, CmmUtil.getCookie(request, propertiesService.getString("kccf.cookie.pscType.key")));
|
|
CmmUtil.setEncoderCookie(response, propertiesService.getString("kccf.cookie.addr.key"), addr);
|
|
CmmUtil.setEncoderCookie(response, propertiesService.getString("kccf.cookie.pscType.key"), paramMap.getString("pscType"));
|
|
|
|
|
|
int pscHstCnt = 0;
|
|
DataMap pscHstMap = cmmService.selectCmmPscHstDetail(paramMap);
|
|
List<DataMap> sigunguList = null;
|
|
if(pscHstMap != null){
|
|
pscHstCnt = 1;
|
|
paramMap.clear();
|
|
paramMap.setString("sido", pscHstMap.getString("sidoName"));
|
|
sigunguList = extService.selectExtSigunguList(paramMap);
|
|
}
|
|
model.addAttribute("pscHstCnt", pscHstCnt);
|
|
model.addAttribute("pscHst", pscHstMap);
|
|
model.addAttribute("pscHstSigunguList", sigunguList);
|
|
|
|
} catch (PatternSyntaxException ex1) {
|
|
LOGGER.error("Error in insertCmmPscHst()", ex1);
|
|
} catch (EgovBizException ex2) {
|
|
LOGGER.error("Error in insertCmmPscHst()", ex2);
|
|
}
|
|
|
|
return "kccf/cmm/userSetPopupAjax.jsp";
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmActivityHstAllListTotCnt.do")
|
|
public ModelAndView selectCmmActivityHstAllListTotCnt(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
String successYn = "N";
|
|
|
|
List<DataMap> resultList = null;
|
|
try {
|
|
resultList = cmmService.selectCmmActivityHstAllListTotCnt(paramMap);
|
|
successYn = "Y";
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in selectCmmActivityHstAllListTotCnt()", e);
|
|
}
|
|
model.addAttribute("successYn", successYn);
|
|
model.addAttribute("resultList", resultList);
|
|
return modelAndView;
|
|
}
|
|
@RequestMapping(value="/cmm/regCmmScrap.do")
|
|
public void insertCmmScrap(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws IOException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap.setString("contentId", paramMap.getString("cId"));
|
|
paramMap.setString("contentType", paramMap.getString("cType"));
|
|
|
|
String keyName = "contentId";
|
|
if(Constant.CONTENT_TYPE_G.equals(paramMap.getString("contentType"))
|
|
|| Constant.CONTENT_TYPE_I.equals(paramMap.getString("contentType"))
|
|
|| Constant.CONTENT_TYPE_P.equals(paramMap.getString("contentType")) ){
|
|
keyName = "targetId";
|
|
}
|
|
paramMap.setString("linkUrl", paramMap.getString("lUrl") + "?"+keyName+"="+paramMap.getString("contentId"));
|
|
|
|
String successYn = "Y";
|
|
String resultCode = "01";
|
|
try {
|
|
if("on".equals(paramMap.getString("already"))){
|
|
if(cmmService.selectCmmScrapCnt(paramMap)<1){
|
|
successYn = "N";
|
|
resultCode = "98";
|
|
}else{
|
|
cmmService.deleteCmmScrapInfo(paramMap);
|
|
}
|
|
}else{
|
|
// 다른곳에서 등록시에는 불이 안들어온 상태로 DB에만 등록되어있어서 체크 해야함.
|
|
if(cmmService.selectCmmScrapCnt(paramMap)>0){
|
|
successYn = "N";
|
|
resultCode = "99";
|
|
}else{
|
|
resultCode = "00";
|
|
cmmService.insertCmmScrap(paramMap);
|
|
}
|
|
}
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in insertCmmScrap()", e);
|
|
}
|
|
JSONObject jsonObj = new JSONObject();
|
|
jsonObj.put("successYn", successYn);
|
|
jsonObj.put("resultCode", resultCode);
|
|
|
|
response.setContentType("text/html; charset=utf-8");
|
|
response.setDateHeader("Expires", -1);
|
|
response.setHeader("Pragma", "no-cahce");
|
|
response.setHeader("Cache-Control", "no-store"); // HTTP 1.0
|
|
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
|
|
|
|
response.getWriter().write(jsonObj.toString());
|
|
}
|
|
@RequestMapping(value="/cmm/regCmmRecentlyView.do")
|
|
public void insertCmmRecentlyView(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws IOException{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap.setString("contentId", paramMap.getString("cId"));
|
|
paramMap.setString("contentType", paramMap.getString("cType"));
|
|
paramMap.setString("linkUrl", paramMap.getString("lUrl"));
|
|
|
|
String successYn = "N";
|
|
try {
|
|
cmmService.insertCmmActivityHst(paramMap);
|
|
successYn = "Y";
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in insertCmmRecentlyView()", e);
|
|
}
|
|
JSONObject jsonObj = new JSONObject();
|
|
jsonObj.put("successYn", successYn);
|
|
|
|
response.setContentType("text/html; charset=utf-8");
|
|
response.setDateHeader("Expires", -1);
|
|
response.setHeader("Pragma", "no-cahce");
|
|
response.setHeader("Cache-Control", "no-store"); // HTTP 1.0
|
|
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
|
|
|
|
response.getWriter().write(jsonObj.toString());
|
|
}
|
|
@RequestMapping(value="/cmm/regSatisfaction.do")
|
|
public ModelAndView insertSatisfaction(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
String satisfaction;
|
|
switch (paramMap.get("satisfaction").toString()){
|
|
case "매우만족" : satisfaction="5";
|
|
break;
|
|
case "만족" : satisfaction="4";
|
|
break;
|
|
case "보통" : satisfaction="3";
|
|
break;
|
|
case "불만족" : satisfaction="2";
|
|
break;
|
|
default: satisfaction="1";
|
|
break;
|
|
}
|
|
paramMap.setString("contentId", paramMap.get("contentId").toString());
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(request));
|
|
paramMap.setString("stsfdg", satisfaction); //만족도
|
|
paramMap.setString("stsfdgCnt", paramMap.get("satisfactionText").toString());
|
|
paramMap.setString("contentType", paramMap.get("type").toString());
|
|
String successYn = "N";
|
|
try {
|
|
if(cmmService.selectSatisfactionTotCnt(paramMap) > 0){
|
|
successYn = "Y";
|
|
}else{
|
|
cmmService.insertSatisfaction(paramMap);
|
|
successYn = "N";
|
|
}
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in insertSatisfaction()", e);
|
|
}
|
|
|
|
model.addAttribute("successYn", successYn);
|
|
return modelAndView;
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/cmm/cmmAmsAssetMediaList.do")
|
|
public String selectCmmAmsAssetMediaList(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
//paramMap.setString("aId", paramMap.getString("aId"));
|
|
//cmmVO.setaId(paramMap.getString("aId"));
|
|
|
|
// 스크랩 여부 키
|
|
paramMap.setString("sessionId", CmmUtil.getCookieId(req));
|
|
|
|
model.addAttribute("paramVO", cmmVO); // 파라미터
|
|
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
// ams nfs 파일 경로
|
|
CmmUtil.setNfsPathModelMap(req,model);
|
|
|
|
|
|
return "/kccf/cmm/layerMediaListAjax";
|
|
}
|
|
|
|
|
|
/**
|
|
* AMS ASSETS 상세 정보
|
|
* pick 레이어 에셋의 상세정보 : 모든 데이터
|
|
* @param cmmVO
|
|
* @param model
|
|
* @param commandMap
|
|
* @param req
|
|
* @param res
|
|
* @return
|
|
* @throws EgovBizException
|
|
*/
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsPick.do")
|
|
public String selectCmmAmsAssetsPick(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
LOGGER.info("selectCmmAmsAssetsPick() paramMap={}", paramMap);
|
|
|
|
//paramMap.setString("aId", paramMap.getString("aId"));
|
|
//cmmVO.setaId(paramMap.getString("aId"));
|
|
|
|
// 스크랩 여부 키
|
|
paramMap.setString("sessionId", CmmUtil.getCookieId(req));
|
|
|
|
// Asset 상세정보 : 죄측 상단 및 상세
|
|
DataMap cmmAmsAssetsDetail = cmmService.selectCmmAmsAssetsDetail(paramMap);
|
|
model.addAttribute("cmmAmsAssetsDetail", cmmAmsAssetsDetail);
|
|
|
|
// 다른문화원 소장자료 목록 정보를 가져오기 위한 맵핑
|
|
paramMap.setString("sojangCouncil", cmmAmsAssetsDetail.getString("sojangCouncil")); // 소장문화원
|
|
|
|
// AssetMedia 그룹 목록 : 좌측 목록 Cnt
|
|
List<DataMap> cmmAmsAssetsMediaGroupListCnt = cmmService.selectCmmAmsAssetsMediaGroupListCnt(paramMap);
|
|
model.addAttribute("cmmAmsAssetsMediaGroupListCnt", cmmAmsAssetsMediaGroupListCnt);
|
|
|
|
// AssetMedia 그룹 목록 : 좌측 목록
|
|
List<DataMap> cmmAmsAssetsMediaGroupList = cmmService.selectCmmAmsAssetsMediaGroupList(paramMap);
|
|
model.addAttribute("cmmAmsAssetsMediaGroupList", cmmAmsAssetsMediaGroupList);
|
|
|
|
/**** 연속자료 paging ****/
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(cmmVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(cmmVO.getPageUnit());
|
|
paginationInfo.setPageSize((CmmUtil.isMobile(req)) ? cmmVO.getMobilePageSize() : cmmVO.getPageSize());
|
|
|
|
cmmVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
cmmVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
cmmVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
/**** 연속자료 paging ****/
|
|
|
|
int totCnt = 0;
|
|
DataMap cmmAmsAssetsMediaDetail = null;
|
|
List<DataMap> cmmAmsAssetsContinueList = null;
|
|
List<DataMap> tagsListResult = null;
|
|
|
|
// 화면에서 mId 값 넘어오면(지역문화Pick 유형별 목록) 넘어온 값 사용하도록 수정 (2019.10.16)
|
|
String mediaId = paramMap.getString("mId");
|
|
if (StringUtils.isEmpty(mediaId)) {
|
|
// 화면에서 mId 값 넘어오지 않는 경우 (지역문화Pick 지역별 목록)
|
|
if(cmmAmsAssetsMediaGroupList != null && cmmAmsAssetsMediaGroupList.size()>0) {
|
|
mediaId = cmmAmsAssetsMediaGroupList.get(0).getString("id"); // 0번째의 미디어 아이디
|
|
}
|
|
}
|
|
LOGGER.info("selectCmmAmsAssetsPick() mediaId={}", mediaId);
|
|
|
|
if(StringUtils.isNotEmpty(mediaId)){
|
|
// 미디어 ID 맵핑
|
|
if (StringUtils.isEmpty(paramMap.getString("mId"))) paramMap.setString("mId", mediaId);
|
|
cmmVO.setmId(paramMap.getString("mId"));
|
|
|
|
// 에셋 미디어 상세정보(원문보기 쪽 상세정보)
|
|
cmmAmsAssetsMediaDetail = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
|
|
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> tableOfContentsList = CmmUtil.parseTableOfContents(cmmAmsAssetsMediaDetail.getString("tableOfContents"));
|
|
cmmAmsAssetsMediaDetail.put("tableOfContentsList", tableOfContentsList);
|
|
*/
|
|
|
|
// 연관태그목록
|
|
tagsListResult = cmmService.selectCmmAmsAssetsTagsList(paramMap);
|
|
model.addAttribute("cmmAmsAssetsTagsList", tagsListResult);
|
|
|
|
// 연속자료 총 수
|
|
totCnt = cmmService.selectCmmAmsAssetsContinueListTotCnt(cmmVO);
|
|
// 연속자료 목록
|
|
cmmAmsAssetsContinueList = cmmService.selectCmmAmsAssetsContinueList(cmmVO);
|
|
}
|
|
// 상세정보
|
|
model.addAttribute("cmmAmsAssetsMediaDetail", cmmAmsAssetsMediaDetail);
|
|
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
// 문서 원문보기 OCR 목록 (2019.10.04)
|
|
if (cmmAmsAssetsMediaDetail != null && cmmAmsAssetsMediaDetail.getInt("ocrSplitNum") > 1) {
|
|
model.addAttribute("cmmAmsAssetsMediaOcrList", cmmService.selectCmmAmsAssetsMediaOcrList(paramMap));
|
|
}
|
|
*/
|
|
|
|
// 연속자료 페이징 오브젝트
|
|
paginationInfo.setTotalRecordCount(totCnt);
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("cmmAmsAssetsContinueList", cmmAmsAssetsContinueList); // 연속자료 목록
|
|
|
|
|
|
// 연관 지역문화 이야기
|
|
List cmsTag = new ArrayList();
|
|
for(int i = 0; i < tagsListResult.size() ; i++){
|
|
cmsTag.add(tagsListResult.get(i).get("tagsName") );
|
|
}
|
|
List<DataMap> themesResult = cmmService.selectCmmAmsAssetsThemesContentsList(cmsTag);
|
|
model.addAttribute("cmmAmsAssetsThemesContentsList",themesResult);
|
|
|
|
|
|
// 문화원의 다른 소장자료 목록
|
|
List<DataMap> diffSojangListResult = cmmService.selectCmmAmsAssetsDiffSojangList(paramMap);
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
for (int i=0; diffSojangListResult!=null && i<diffSojangListResult.size(); i++) {
|
|
DataMap diffSojang = diffSojangListResult.get(i);
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> diffSojangTableOfContentsList = CmmUtil.parseTableOfContents(diffSojang.getString("tableOfContents"));
|
|
diffSojang.put("tableOfContentsList", diffSojangTableOfContentsList);
|
|
|
|
// 문서 원문보기 OCR 목록
|
|
if (diffSojang.getInt("ocrSplitNum") > 1) {
|
|
diffSojang.put("mediaOcrList", cmmService.selectCmmAmsAssetsMediaOcrList(paramMap));
|
|
}
|
|
// LOGGER.info("selectCmmAmsAssetsPick() diffSojangListResult... i={}, diffSojang.get(\"tableOfContentsLis\")=", i, diffSojang.get("tableOfContentsList"));
|
|
}
|
|
*/
|
|
model.addAttribute("cmmAmsAssetsDiffSojangList", diffSojangListResult);
|
|
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> tableOfContentsList = CmmUtil.parseTableOfContents(cmmAmsAssetsMediaDetail.getString("tableOfContents"));
|
|
cmmAmsAssetsMediaDetail.put("tableOfContentsList", tableOfContentsList);
|
|
*/
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(req));
|
|
paramMap.setString("contentId", paramMap.getString("mId"));
|
|
paramMap.setString("contentType", Constant.CONTENT_TYPE_A);
|
|
cmmService.insertCmmActivityHst(paramMap);
|
|
|
|
model.addAttribute("paramVO", cmmVO); // 파라미터
|
|
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
// ams nfs 파일 경로
|
|
CmmUtil.setNfsPathModelMap(req,model);
|
|
// jsi 값 세팅
|
|
model.addAttribute("jsi", CmmUtil.getCookieId(req));
|
|
|
|
return "/kccf/cmm/layerAmsAssetsPickAjax";
|
|
}
|
|
//AMS 미디어 목록 상세 레이어(PICK) : Ajax
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsPickDetail.do")
|
|
public String selectCmmAmsAssetsPickDetail(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
//paramMap.setString("aId", paramMap.getString("aId"));
|
|
//cmmVO.setaId(paramMap.getString("aId"));
|
|
//paramMap.setString(mId", paramMap.getString("mId"));
|
|
//cmmVO.setaId(paramMap.getString("mId"));
|
|
|
|
// 스크랩 여부 키
|
|
paramMap.setString("sessionId", CmmUtil.getCookieId(req));
|
|
|
|
// Asset 상세정보(죄측 상단 및 상세)
|
|
DataMap cmmAmsAssetsDetail = cmmService.selectCmmAmsAssetsDetail(paramMap);
|
|
model.addAttribute("cmmAmsAssetsDetail", cmmAmsAssetsDetail);
|
|
|
|
// 다른문화원 소장자료 목록 정보를 가져오기 위한 맵핑
|
|
paramMap.setString("sojangCouncil", cmmAmsAssetsDetail.getString("sojangCouncil")); // 소장문화원
|
|
|
|
// 에셋 미디어 상세정보(원문보기 쪽 상세정보)
|
|
DataMap cmmAmsAssetsMediaDetail = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
|
|
model.addAttribute("cmmAmsAssetsMediaDetail", cmmAmsAssetsMediaDetail);
|
|
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> tableOfContentsList = CmmUtil.parseTableOfContents(cmmAmsAssetsMediaDetail.getString("tableOfContents"));
|
|
cmmAmsAssetsMediaDetail.put("tableOfContentsList", tableOfContentsList);
|
|
|
|
// 문서 원문보기 OCR 목록 (2019.10.04)
|
|
if (cmmAmsAssetsMediaDetail != null && cmmAmsAssetsMediaDetail.getInt("ocrSplitNum") > 1) {
|
|
model.addAttribute("cmmAmsAssetsMediaOcrList", cmmService.selectCmmAmsAssetsMediaOcrList(paramMap));
|
|
}
|
|
*/
|
|
|
|
// 연관태그목록
|
|
List<DataMap> tagsListResult = cmmService.selectCmmAmsAssetsTagsList(paramMap);
|
|
model.addAttribute("cmmAmsAssetsTagsList", tagsListResult);
|
|
|
|
/**** 연속자료 paging ****/
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(cmmVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(cmmVO.getPageUnit());
|
|
paginationInfo.setPageSize((CmmUtil.isMobile(req)) ? cmmVO.getMobilePageSize() : cmmVO.getPageSize());
|
|
|
|
cmmVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
cmmVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
cmmVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
/**** 연속자료 paging ****/
|
|
|
|
// 미디어 ID 맵핑
|
|
cmmVO.setmId(paramMap.getString("mId"));
|
|
// 연속자료 총 수
|
|
int totCnt = cmmService.selectCmmAmsAssetsContinueListTotCnt(cmmVO);
|
|
// 연속자료 목록
|
|
model.addAttribute("cmmAmsAssetsContinueList", cmmService.selectCmmAmsAssetsContinueList(cmmVO));
|
|
// 연속자료 페이징 오브젝트
|
|
paginationInfo.setTotalRecordCount(totCnt);
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
|
|
// 연관 지역문화 이야기
|
|
List cmsTag = new ArrayList();
|
|
for(int i = 0; i < tagsListResult.size() ; i++){
|
|
cmsTag.add(tagsListResult.get(i).get("tagsName") );
|
|
}
|
|
List<DataMap> themesResult = cmmService.selectCmmAmsAssetsThemesContentsList(cmsTag);
|
|
model.addAttribute("cmmAmsAssetsThemesContentsList",themesResult);
|
|
|
|
// 문화원의 다른 소장자료 목록
|
|
List<DataMap> diffSojangListResult = cmmService.selectCmmAmsAssetsDiffSojangList(paramMap);
|
|
/* 목차 정보가 많을 경우 select box에 표시하기 어려움 - 뷰어 띄울 때 목차 표시하도록 변경할 예정
|
|
for (int i=0; diffSojangListResult!=null && i<diffSojangListResult.size(); i++) {
|
|
DataMap diffSojang = diffSojangListResult.get(i);
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> diffSojangTableOfContentsList = CmmUtil.parseTableOfContents(diffSojang.getString("tableOfContents"));
|
|
diffSojang.put("tableOfContentsList", diffSojangTableOfContentsList);
|
|
|
|
// 문서 원문보기 OCR 목록
|
|
if (diffSojang.getInt("ocrSplitNum") > 1) {
|
|
diffSojang.put("mediaOcrList", cmmService.selectCmmAmsAssetsMediaOcrList(paramMap));
|
|
}
|
|
// LOGGER.info("selectCmmAmsAssetsPickDetail() diffSojangListResult... i={}, diffSojang.get(\"tableOfContentsLis\")=", i, diffSojang.get("tableOfContentsList"));
|
|
}
|
|
*/
|
|
model.addAttribute("cmmAmsAssetsDiffSojangList", diffSojangListResult);
|
|
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(req));
|
|
paramMap.setString("contentId", paramMap.getString("mId"));
|
|
paramMap.setString("contentType", Constant.CONTENT_TYPE_A);
|
|
cmmService.insertCmmActivityHst(paramMap);
|
|
|
|
// 관심지역 정보
|
|
model.addAttribute("pscHst", cmmService.selectCmmPscHstDetail(paramMap));
|
|
|
|
model.addAttribute("paramVO", cmmVO); // 파라미터
|
|
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
// ams nfs 파일 경로
|
|
CmmUtil.setNfsPathModelMap(req,model);
|
|
|
|
return "/kccf/cmm/layerAmsAssetsPickDetailAjax";
|
|
}
|
|
//AMS 미디어 목록 상세 레이어(PICK) : 연속자료 목록: Ajax
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsPickContinueList.do")
|
|
public String selectCmmAmsAssetsPickContinueList(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
// 스크랩 여부 키
|
|
paramMap.setString("sessionId", CmmUtil.getCookieId(req));
|
|
|
|
// Asset 상세정보(죄측 상단 및 상세)
|
|
DataMap cmmAmsAssetsDetail = cmmService.selectCmmAmsAssetsDetail(paramMap);
|
|
model.addAttribute("cmmAmsAssetsDetail", cmmAmsAssetsDetail);
|
|
|
|
// 에셋 미디어 상세정보(원문보기 쪽 상세정보)
|
|
DataMap cmmAmsAssetsMediaDetail = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
|
|
model.addAttribute("cmmAmsAssetsMediaDetail", cmmAmsAssetsMediaDetail);
|
|
|
|
|
|
/**** 연속자료 paging ****/
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(cmmVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(cmmVO.getPageUnit());
|
|
paginationInfo.setPageSize((CmmUtil.isMobile(req)) ? cmmVO.getMobilePageSize() : cmmVO.getPageSize());
|
|
|
|
cmmVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
cmmVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
cmmVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
/**** 연속자료 paging ****/
|
|
|
|
// 연속자료 총 수
|
|
int totCnt = cmmService.selectCmmAmsAssetsContinueListTotCnt(cmmVO);
|
|
// 연속자료 목록
|
|
model.addAttribute("cmmAmsAssetsContinueList", cmmService.selectCmmAmsAssetsContinueList(cmmVO));
|
|
// 연속자료 페이징 오브젝트
|
|
paginationInfo.setTotalRecordCount(totCnt);
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
|
|
// 관심지역 정보
|
|
model.addAttribute("pscHst", cmmService.selectCmmPscHstDetail(paramMap));
|
|
model.addAttribute("paramVO", cmmVO); // 파라미터
|
|
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
// ams nfs 파일 경로
|
|
CmmUtil.setNfsPathModelMap(req,model);
|
|
|
|
return "/kccf/cmm/layerAmsAssetsPickContinueListAjax";
|
|
}
|
|
// 미디어 기준의 목록(레이어 원문보기용)
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsOriginViewList.do")
|
|
public String selectCmmAmsAssetsOriginViewList(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
paramMap.setString("aid", paramMap.getString("aId"));
|
|
paramMap.setString("mid", paramMap.getString("mId"));
|
|
|
|
// AssetMedia 목록
|
|
String rsUrl = "";
|
|
String assetType = "";
|
|
if(Constant.M_TYPE_I.equals(paramMap.getString("mType"))){
|
|
// 이미지
|
|
rsUrl = "/kccf/cmm/layerImgAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[0];
|
|
} else if(Constant.M_TYPE_V.equals(paramMap.getString("mType"))){
|
|
// 비디오
|
|
rsUrl = "/kccf/cmm/layerVideoAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[1];
|
|
} else if(Constant.M_TYPE_A.equals(paramMap.getString("mType"))){
|
|
// 오디오
|
|
rsUrl = "/kccf/cmm/layerAudioAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[2];
|
|
}
|
|
|
|
paramMap.setString("assetType", assetType);
|
|
model.addAttribute("mType", paramMap.getString("mType"));
|
|
model.addAttribute("pageIndex", 1);
|
|
model.addAttribute("lastPageNo", 1);
|
|
|
|
model.addAttribute("cmmOriginViewList", cmmService.selectCmmAmsAssetsOriginViewList(paramMap));
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
|
|
return rsUrl;
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsOriginViewList-data.do")
|
|
public String selectCmmAmsAssetsOriginViewListData(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
model.addAttribute("paramVO",cmmVO);
|
|
paramMap.setString("uaType", Constant.UA_TYPE_A);
|
|
paramMap.setString("activityType", Constant.ACTIVITY_TYPE_B);
|
|
// 파라미터 맵핑
|
|
|
|
|
|
|
|
paramMap.setString("aid", paramMap.getString("aId"));
|
|
paramMap.setString("mid", paramMap.getString("mId"));
|
|
|
|
// AssetMedia 목록
|
|
String rsUrl = "";
|
|
String assetType = "";
|
|
if(Constant.M_TYPE_I.equals(paramMap.getString("mType"))){
|
|
// 이미지
|
|
rsUrl = "/kccf/cmm/layerImgAddAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[0];
|
|
} else if(Constant.M_TYPE_V.equals(paramMap.getString("mType"))){
|
|
// 비디오
|
|
rsUrl = "/kccf/cmm/layerVideoAddAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[1];
|
|
} else if(Constant.M_TYPE_A.equals(paramMap.getString("mType"))){
|
|
// 오디오
|
|
rsUrl = "/kccf/cmm/layerVideoAddAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[2];
|
|
}
|
|
|
|
|
|
|
|
paramMap.setString("assetType", assetType);
|
|
model.addAttribute("mType", paramMap.getString("mType"));
|
|
|
|
|
|
|
|
/**** paging ****/
|
|
PaginationInfo paginationInfo = new PaginationInfo();
|
|
paginationInfo.setCurrentPageNo(cmmVO.getPageIndex());
|
|
paginationInfo.setRecordCountPerPage(cmmVO.getPageUnit());
|
|
paginationInfo.setPageSize(cmmVO.getPageSize());
|
|
|
|
cmmVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
|
cmmVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
|
cmmVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
|
/**** paging ****/
|
|
|
|
paramMap.setInt("recordCountPerPage", paginationInfo.getRecordCountPerPage());
|
|
paramMap.setInt("firstIndex", paginationInfo.getFirstRecordIndex());
|
|
paramMap.setInt("lastIndex", paginationInfo.getLastRecordIndex());
|
|
|
|
int totCnt = cmmService.selectCmmAmsAssetsOriginViewListAjaxCnt(paramMap);
|
|
model.addAttribute("totCnt", totCnt);
|
|
paginationInfo.setTotalRecordCount(totCnt);
|
|
model.addAttribute("paginationInfo", paginationInfo);
|
|
model.addAttribute("lastPageNo", paginationInfo.getLastPageNo());
|
|
|
|
|
|
|
|
model.addAttribute("cmmOriginViewList", cmmService.selectCmmAmsAssetsOriginViewListAjax(paramMap));
|
|
|
|
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
|
|
|
|
return rsUrl;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 미디어 기준의 상세(레이어 원문보기용)
|
|
@RequestMapping(value="/cmm/cmmAmsAssetsOriginViewDetail.do")
|
|
public ModelAndView selectCmmAmsAssetsOriginViewDetail(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
LOGGER.info("selectCmmAmsAssetsOriginViewDetail() start... req.getRequestURI()={}, req.getQueryString()={}", req.getRequestURI(), req.getQueryString());
|
|
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
paramMap.setString("mid", paramMap.getString("mId"));
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
DataMap responseMap = new DataMap();
|
|
DataMap resultMap = cmmService.selectCmmAmsAssetsOriginViewDetail(paramMap);
|
|
responseMap.put("result", resultMap);
|
|
|
|
|
|
// 미디어 활동이력 (원문보기 이력) 등록 (2019.08.26)
|
|
DataMap hstParamMap = new DataMap();
|
|
hstParamMap.put("jsessionId", CmmUtil.getCookieId(req));
|
|
hstParamMap.put("contentId", paramMap.getString("mId"));
|
|
hstParamMap.put("assetType", resultMap.getString("assetType"));
|
|
hstParamMap.put("linkUrl", req.getRequestURI()+"?"+req.getQueryString());
|
|
hstParamMap.put("uaType", CmmUtil.isMobile(req) ? Constant.UA_TYPE_M : Constant.UA_TYPE_W);
|
|
cmmService.insertCmmActivityMediaHst(hstParamMap);
|
|
|
|
|
|
model.addAttribute("responseData", responseMap);
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/imageSrc.do")
|
|
public String cmmSmartEditorImageView(HttpServletRequest request, HttpServletResponse response) {
|
|
return "egovframework/cmm/cmmSmartEditorImageView";
|
|
}
|
|
private String getBrowser(HttpServletRequest request) {
|
|
String header = request.getHeader("User-Agent");
|
|
if (header.indexOf("MSIE") > -1) {
|
|
return "MSIE";
|
|
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
|
|
return "Trident";
|
|
} else if (header.indexOf("Chrome") > -1) {
|
|
return "Chrome";
|
|
} else if (header.indexOf("Opera") > -1) {
|
|
return "Opera";
|
|
}
|
|
return "Firefox";
|
|
}
|
|
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
String browser = getBrowser(request);
|
|
|
|
String dispositionPrefix = "attachment; filename=";
|
|
String encodedFilename = null;
|
|
|
|
if (browser.equals("MSIE")) {
|
|
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
|
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
|
|
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
|
} else if (browser.equals("Firefox")) {
|
|
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
|
} else if (browser.equals("Opera")) {
|
|
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
|
} else if (browser.equals("Chrome")) {
|
|
StringBuffer sb = new StringBuffer();
|
|
for (int i = 0; i < filename.length(); i++) {
|
|
char c = filename.charAt(i);
|
|
if (c > '~') {
|
|
sb.append(URLEncoder.encode("" + c, "UTF-8"));
|
|
} else {
|
|
sb.append(c);
|
|
}
|
|
}
|
|
encodedFilename = sb.toString();
|
|
} else {
|
|
throw new IOException("Not supported browser");
|
|
}
|
|
|
|
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
|
|
|
|
if ("Opera".equals(browser)) {
|
|
response.setContentType("application/octet-stream;charset=UTF-8");
|
|
}
|
|
}
|
|
/**
|
|
* response Cache
|
|
* @param response
|
|
*/
|
|
@SuppressWarnings("unused")
|
|
private void setResponseCacheControl(HttpServletResponse response){
|
|
response.setContentType("text/html; charset=utf-8");
|
|
response.setDateHeader("Expires", -1);
|
|
response.setHeader("Pragma", "no-cahce");
|
|
response.setHeader("Cache-Control", "no-store"); // HTTP 1.0
|
|
response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
|
|
}
|
|
|
|
/**
|
|
* PDF 호출 - [RIS] 파일에 표시되는 URL (viewer에 관계없이 변하지 않는 URL 제공위해 생성)
|
|
* ex) /npdfView.do?npdf=R10692
|
|
*
|
|
* npdf="미디어ID" (사용여부, 원문공개여부 모두 Y가 아니면 404 페이지)
|
|
* npdf="R+미디어인터페이스ID" (사용여부, 원문공개여부 모두 Y가 아니면 404 페이지)
|
|
* npdf="I+미디어인터페이스ID" (사용여부, 원문공개여부 모두 Y가 아니면 404 페이지)
|
|
* npdf="A+미디어인터페이스ID" (사용여부, 원문공개여부 관계없이 항상 뷰어 띄움)
|
|
*
|
|
* @param request
|
|
* @param response
|
|
* @param model
|
|
* @return
|
|
*/
|
|
@RequestMapping(value="/npdfView.do")
|
|
public String nPdfView(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
String npdf = paramMap.getString("npdf"); // "R" + interfaceId
|
|
String pNumber = paramMap.getString("pn");
|
|
if (StringUtils.isEmpty(npdf)) {
|
|
LOGGER.error("nPdfView() npdf is empty...");
|
|
return "/code404.jsp";
|
|
}
|
|
|
|
String rfType = ""; // RIS일 경우 "R" (Constant.UA_TYPE_R)
|
|
String contentId = ""; // asset media id
|
|
if (npdf.startsWith(Constant.UA_TYPE_R) || npdf.startsWith("I") || npdf.startsWith("A")) { // npdf="R+인터페이스ID", npdf="I+인터페이스ID", npdf="A+인터페이스ID"
|
|
if (npdf.startsWith(Constant.UA_TYPE_R)) rfType = Constant.UA_TYPE_R;
|
|
|
|
if (npdf.length() > 1) {
|
|
// interface_id 로 media_id 구하기
|
|
DataMap mediaParamMap = new DataMap();
|
|
mediaParamMap.put("interfaceId", npdf.substring(1));
|
|
DataMap mediaMap = cmmService.selectCmmAmsAssetsMediaDetailByInterfaceId(mediaParamMap);
|
|
if (mediaMap != null) contentId = mediaMap.getString("id");
|
|
}
|
|
} else { // mediaId만 넘긴 경우 (npdf="미디어ID")
|
|
contentId = npdf;
|
|
}
|
|
LOGGER.info("nPdfView() contentId={}, rfType={}", contentId, rfType);
|
|
|
|
// searchData index (분할파일일 경우 default로 띄울 분할파일 index 값 (1부터 시작하는 값))
|
|
//int sdIdx = paramMap.getInt("sd"); xss 때문에 아래처럼 수정
|
|
|
|
String sd = CmmUtil.clearXSS(paramMap.getString("sd")); // XSS 방지
|
|
if(sd == "") sd = "0";
|
|
int sdIdx = Integer.parseInt(sd);
|
|
|
|
if (sdIdx == 0) sdIdx += 1;
|
|
LOGGER.info("nPdfView() sdIdx={}", sdIdx);
|
|
|
|
String assetType = "";
|
|
// String encData = ""; // 원본파일 사용할 경우
|
|
String path = ""; // 분할파일 사용할 경우
|
|
String title = ""; // 분할파일 사용할 경우
|
|
String searchData = ""; // 분할파일 사용할 경우 (분할파알 중 default로 선택될 파일명)
|
|
String orginTitle = "";
|
|
String ogData = "";
|
|
|
|
if (StringUtils.isNotEmpty(contentId)) {
|
|
String jsessionId = CmmUtil.getCookieId(request);
|
|
|
|
// media 단건조회
|
|
DataMap mediaParamMap = new DataMap();
|
|
mediaParamMap.put("mId", contentId);
|
|
mediaParamMap.put("sessionId", jsessionId);
|
|
if (npdf.startsWith("A")){
|
|
mediaParamMap.put("allView", "Y");
|
|
}
|
|
DataMap mediaMap = cmmService.selectCmmAmsAssetsMediaDetail(mediaParamMap);
|
|
orginTitle = mediaMap.getString("title");
|
|
ogData = mediaMap.getString("title")+"||";
|
|
ogData = ogData + CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+request.getRequestURI()+"?"+request.getQueryString()+"||";
|
|
|
|
if (StringUtils.isNotEmpty(mediaMap.getString("mainImg"))){
|
|
ogData = ogData + CmmUtil.getAssetImageUrl(mediaMap.getString("mainImg"))+"||";
|
|
}else{
|
|
ogData = ogData + "||";
|
|
}
|
|
ogData = ogData + mediaMap.getString("sojangCouncilNm");
|
|
|
|
if (mediaMap != null) {
|
|
if ("N".equals(mediaMap.getString("useAt")) || "N".equals(mediaMap.getString("orgOpenAt"))) {
|
|
LOGGER.error("nPdfView() USE_AT=N or ORG_OPEN_AT=N ... npdf={}, mediaParamMap={}", npdf, mediaParamMap);
|
|
if (!npdf.startsWith("A")) return "/code404.jsp"; // npdf="A***" 형식일 때는 사용여부/원문공개여부 상관없이 항상 띄움
|
|
}
|
|
assetType = mediaMap.getString("assetType");
|
|
|
|
String pdfViewerDelimiter = "||"; // pdf뷰어에서 사용하는 delimiter
|
|
String amsNasPath = CmmUtil.getPropertyStr(Constant.NFS_NAS_KEY);
|
|
|
|
// 분할파일 정보 조회
|
|
List<DataMap> ocrList = cmmService.selectCmmAmsAssetsMediaOcrList(mediaParamMap);
|
|
if (ocrList == null || ocrList.size() == 0) {
|
|
String streFileName = mediaMap.getString("streFileName");
|
|
String filePath = CmmUtil.getPropertyStr(Constant.NFS_NAS_KEY)+CmmUtil.getPropertyStr(Constant.NFS_DOC_KEY);
|
|
if (streFileName.contains("/")) filePath = CmmUtil.getPropertyStr(Constant.NFS_NAS_KEY);
|
|
if (streFileName.startsWith(CmmUtil.getPropertyStr("ams.nas.root.path"))) filePath = ""; // ex) /nfs_nas/minio/amsweb-opt/pdf/***.pdf
|
|
|
|
path += filePath + streFileName;
|
|
/*
|
|
// 암호화 문자열 생성 - 기존방식 (원본파일 하나 호출)
|
|
encData = FunctionTag.unidocsViewer(filePath, streFileName);
|
|
*/
|
|
|
|
// 2019.12.27 수정작업 이후 - customLayout.jsp 사용하려면 반드시 searchData 값 존재해야 함
|
|
searchData = FilenameUtils.getName(path); // 경로 제외한 파일명만
|
|
|
|
} else {
|
|
// sdIdx 값이 ocrList 크기를 벗어날 경우 첫번째 분할 파일 default로 보여주기
|
|
if (sdIdx > ocrList.size()) sdIdx = 1;
|
|
|
|
for (int i=0; i<ocrList.size(); i++) {
|
|
DataMap ocr = ocrList.get(i);
|
|
String fileName = ocr.getString("fileName");
|
|
if (i > 0) path += pdfViewerDelimiter;
|
|
if (fileName.startsWith(CmmUtil.getPropertyStr("ams.nas.root.path"))) path += fileName; // ex) /nfs_nas/minio/amsweb-opt/pdf/***.pdf
|
|
else path += amsNasPath + fileName; // ex) 248/15/5064_divide1-1.pdf
|
|
|
|
|
|
if (i == (sdIdx-1)) {
|
|
searchData = fileName;
|
|
searchData = FilenameUtils.getName(path); // 경로 제외한 파일명만
|
|
}
|
|
}
|
|
pNumber = "1"; //분할파일은 1페이지 부터 무조건 시작
|
|
}
|
|
LOGGER.info("nPdfView() path={}", path);
|
|
LOGGER.info("nPdfView() searchData={}", searchData);
|
|
|
|
// 문서 목차정보 파싱
|
|
List<CmmAmsDocTableOfContentsVO> tableOfContentsList = CmmUtil.parseTableOfContents(mediaMap.getString("tableOfContents"));
|
|
title = CmmUtil.makeTableOfContentsMarkup(tableOfContentsList, pdfViewerDelimiter);
|
|
LOGGER.info("nPdfView() title={}", title);
|
|
|
|
/*
|
|
// 암호화 문자열 생성
|
|
// PDFPath, downloadYn(true/false), printYn(true/false)
|
|
String download = "true";
|
|
String print = "true";
|
|
String annotation = "false";
|
|
String[] param = new String[]{ java.net.URLEncoder.encode( path, "UTF-8" ), java.net.URLEncoder.encode( title, "UTF-8" ), download, print, annotation};
|
|
encData = PDFInfoEncrypter.encrypt( param );
|
|
LOGGER.info("nPdfView() encData={}", encData);
|
|
*/
|
|
}
|
|
|
|
// 미디어 활동이력 (원문보기 이력) 등록
|
|
DataMap hstParamMap = new DataMap();
|
|
hstParamMap.put("jsessionId", jsessionId);
|
|
hstParamMap.put("contentId", contentId);
|
|
hstParamMap.put("assetType", assetType);
|
|
hstParamMap.put("linkUrl", request.getRequestURI()+"?"+request.getQueryString());
|
|
String uaType = rfType; // rfType 값이 넘어온 경우 그대로 사용
|
|
if (StringUtils.isEmpty(uaType)) {
|
|
if (CmmUtil.isMobile(request)) uaType = Constant.UA_TYPE_M;
|
|
else uaType = Constant.UA_TYPE_W;
|
|
}
|
|
hstParamMap.put("uaType", uaType);
|
|
cmmService.insertCmmActivityMediaHst(hstParamMap);
|
|
}
|
|
|
|
/*if (StringUtils.isNotEmpty(encData)) { // 원본파일 열 경우 - 기존방식 사용
|
|
String pdfPath = CmmUtil.getPropertyStr(Constant.PDF_VIEW_KEY);
|
|
return "redirect:"+pdfPath + "/customLayoutBasic.jsp?encdata="+encData;
|
|
|
|
} else */ if (StringUtils.isNotEmpty(path)) { // prepareCustomLayout.jsp 에서 암호화 후 POST 전송 (직접 redirect 하면 "Request-URI Too Long" 에러 발생
|
|
// 목차 + 분할파일 열 경우 및 원본파일 일 경우 모두 신규방식 사용 (2019.12.27)
|
|
request.setAttribute("path", path);
|
|
request.setAttribute("title", title);
|
|
request.setAttribute("searchData", searchData);
|
|
request.setAttribute("orginTitle", orginTitle);
|
|
request.setAttribute("ogData", ogData);
|
|
request.setAttribute("pNumber", pNumber);
|
|
|
|
return "kccf/cmm/prepareCustomLayout";
|
|
} else {
|
|
LOGGER.error("nPdfView() encData, path empty... npdf={}", npdf);
|
|
return "/code404.jsp";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 테스트용 PDF 호출
|
|
* @param request
|
|
* @param response
|
|
* @param model
|
|
* @return
|
|
*/
|
|
@RequestMapping(value="/cmm/pdfView.do")
|
|
public String cmmPdfView(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
String fileNm = paramMap.getString("fileNm");
|
|
model.addAttribute("fileNm", fileNm);
|
|
return "/kccf/cmm/pdfTestView";
|
|
}
|
|
/**
|
|
* 테스트용 vod 호출 (ams에서 동영상 확인위해 사용한다고 함)
|
|
* @param request
|
|
* @param response
|
|
* @param model
|
|
* @return
|
|
*/
|
|
@RequestMapping(value="/cmm/vodView.do")
|
|
public String cmmVodView(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
// 동영상파일명
|
|
String fileNm = paramMap.getString("fileNm");
|
|
model.addAttribute("fileNm", fileNm);
|
|
|
|
// 자막파일명
|
|
String sFileNm = paramMap.getString("sFileNm");
|
|
model.addAttribute("sFileNm", sFileNm);
|
|
|
|
return "/kccf/cmm/vodTestView";
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 테스트용 audio 호출
|
|
* @param request
|
|
* @param response
|
|
* @param model
|
|
* @return
|
|
*/
|
|
@RequestMapping(value="/cmm/audioView.do")
|
|
public String cmmAudioView(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
String fileNm = paramMap.getString("fileNm");
|
|
String fileNmOri = paramMap.getString("fileNmOri");
|
|
model.addAttribute("fileNm", fileNm);
|
|
model.addAttribute("fileNmOri", fileNmOri);
|
|
return "/kccf/cmm/audioTestView";
|
|
}
|
|
|
|
// 미디어 활동이력 (원문보기 이력) 등록 (2019.08.26)
|
|
@RequestMapping(value="/cmm/regCmmMediaHst.do")
|
|
public ModelAndView insertCmmActivityMediaHst(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
LOGGER.info("insertCmmActivityMediaHst() start... req.getRequestURI()={}, req.getQueryString()={}", req.getRequestURI(), req.getQueryString());
|
|
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
paramMap.setString("mid", paramMap.getString("mId"));
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
DataMap responseMap = new DataMap();
|
|
DataMap resultMap = cmmService.selectCmmAmsAssetsOriginViewDetail(paramMap);
|
|
responseMap.put("result", resultMap);
|
|
|
|
|
|
// 미디어 활동이력 (원문보기 이력) 등록 (2019.08.26)
|
|
DataMap hstParamMap = new DataMap();
|
|
hstParamMap.put("jsessionId", CmmUtil.getCookieId(req));
|
|
hstParamMap.put("contentId", paramMap.getString("mId"));
|
|
hstParamMap.put("assetType", resultMap.getString("assetType"));
|
|
hstParamMap.put("linkUrl", req.getRequestURI()+"?"+req.getQueryString());
|
|
hstParamMap.put("uaType", CmmUtil.isMobile(req) ? Constant.UA_TYPE_M : Constant.UA_TYPE_W);
|
|
cmmService.insertCmmActivityMediaHst(hstParamMap);
|
|
|
|
|
|
model.addAttribute("responseData", hstParamMap);
|
|
return modelAndView;
|
|
}
|
|
|
|
/**
|
|
* [상세검색] 레이어 - 지역문화원 정보
|
|
* @param cmmVO
|
|
* @param model
|
|
* @param commandMap
|
|
* @param req
|
|
* @param res
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
@RequestMapping(value="/cmm/cmmSearchLayerCouncilInfo-data.do")
|
|
public String selectCmmSearchLayerCouncilInfoAjax(
|
|
@ModelAttribute("searchVO") SearchVO searchVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws Exception {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
LOGGER.info("selectCmmCouncilInfoListAjax() paramMap={}, searchVO={}", paramMap, searchVO);
|
|
|
|
ComDefaultCodeVO CodeVO = new ComDefaultCodeVO();
|
|
CodeVO.setCodeId(Constant.CODE_ID_FMS018);
|
|
model.addAttribute("couSidoList", cmmUseService.selectCmmCodeDetail(CodeVO));
|
|
|
|
List<DataMap> councilList = resourcesService.selectCouncilList();
|
|
model.addAttribute("councilList", councilList);
|
|
|
|
model.addAttribute("searchVO", searchVO);
|
|
|
|
return "kccf/cmm/searchLayerCouncilAjax";
|
|
}
|
|
|
|
|
|
|
|
@RequestMapping(value="/cmm/risDownloadFile.do")
|
|
public void risFileDownload(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
|
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
LOGGER.info("risFileDownload() paramMap={}", paramMap);
|
|
DataMap media = cmmService.selectCmmAmsAssetsMediaDetail2(paramMap); // asset id로 조회
|
|
String mediaId = media.getString("mediaId");
|
|
String mediaInterfaceId = media.getString("mediaInterfaceId");
|
|
|
|
List<DataMap> tagsList = null;
|
|
tagsList = cmmService.selectCmmAmsAssetsTagKeyList(paramMap);
|
|
|
|
StringBuffer msb = new StringBuffer();
|
|
msb.append("TY - BOOK\n");
|
|
if(media.get("title") != null){ msb.append("TI - " + media.get("title").toString() + "\n");} //제목
|
|
|
|
if(media.get("author") != null){ msb.append("AU - " + media.get("author").toString() + "\n");} //저자
|
|
|
|
if(media.get("summary") != null){ //요약
|
|
msb.append("AB - " + media.get("summary").toString() + "\n");
|
|
}else{
|
|
msb.append("AB - 한국문화원연합회 지역문화 포털에서 제공하는 지방문화원 소장자료 입니다.\n");
|
|
}
|
|
|
|
if(media.get("mgntNo") != null){ msb.append("CN - " + media.get("mgntNo").toString() + "\n");} //도서번호
|
|
|
|
if(media.get("genyear") != null){ msb.append("DA - " + media.get("genyear").toString() + "\n");} //발행일자
|
|
|
|
if(media.get("genyear") != null){ msb.append("PY - " + media.get("genyear").toString() + "\n");} //발행년도
|
|
|
|
if(media.get("totalPage") != null){ msb.append("SP - " + media.get("totalPage").toString() + "\n");} //총페이지수
|
|
|
|
msb.append("LA - Korean\n"); //언어
|
|
|
|
if(media.get("copyright") != null){ msb.append("PB - " + media.get("copyright").toString() + "\n");} //출판사
|
|
|
|
if (StringUtils.isNotEmpty(mediaInterfaceId)) { // mediaInterfaceId가 존재할 경우만 URL 정보 생성
|
|
if(media.get("assetType") != null){
|
|
if(media.get("assetType").toString().equals("문서") ){
|
|
|
|
String url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/npdfView.do?";
|
|
url += "npdf="+Constant.UA_TYPE_R+mediaInterfaceId; // MEDIA 의 INTERFACE_ID 사용
|
|
|
|
if(media.get("orgOpenAt").toString().equals("Y")){ //원문공개여부
|
|
msb.append("UR - "+url+"\n");
|
|
}
|
|
|
|
}else if(media.get("assetType").toString().equals("링크")){
|
|
msb.append("UR - " + media.get("linkData").toString() + "\n");
|
|
}else{
|
|
String url = CmmUtil.getPropertyStr(Constant.KCCF_HOME_KEY)+"/lib/libraryDetail.do?contentId="+mediaId;
|
|
url += "&rfType="+Constant.UA_TYPE_R; // 히스토리 등록 시 사용
|
|
msb.append("UR - " + url + "\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
if(media.get("source") != null){ msb.append("DB - " + media.get("source").toString() + "\n");} //아카이브
|
|
|
|
for(int i = 0; i < tagsList.size() ; i++){
|
|
if(tagsList.get(i).get("tagName").toString() != "-"){ msb.append("KW - " + tagsList.get(i).get("tagName").toString() + "\n");} //키워드
|
|
}
|
|
|
|
if(media.get("subtitle") != null){ msb.append("T2 - " + media.get("subtitle").toString() + "\n");} //부제목
|
|
|
|
msb.append("ER - ");
|
|
|
|
byte[] content = msb.toString().getBytes();
|
|
|
|
String fileName = media.get("title").toString() + ".ris";
|
|
//FileOutputStream fos = null;
|
|
BufferedOutputStream outs = null;
|
|
try
|
|
{
|
|
String orglFileNm = new String(fileName.getBytes("euc-kr"), "iso-8859-1");
|
|
response.setHeader("Content-Disposition", "attachment; filename=\""+ orglFileNm +"\"");
|
|
outs = new BufferedOutputStream(response.getOutputStream());
|
|
outs.write(content);
|
|
outs.close();
|
|
}
|
|
catch (IOException e){
|
|
LOGGER.error("fail in risFileDownload()", e);
|
|
} catch (Exception e){
|
|
LOGGER.error("fail in risFileDownload()", e);
|
|
}
|
|
|
|
response.getOutputStream().flush();
|
|
response.getOutputStream().close();
|
|
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmWebzineSubScribe.do")
|
|
public String selectCmmWebzineCnfirm(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
String successYn = "N";
|
|
int cnt = 0;
|
|
try {
|
|
cnt = cmmService.selectCmmWebzineCnfirm(paramMap);
|
|
if(cnt < 1){
|
|
cmmService.insertCmmWebzineSubScribe(paramMap);
|
|
successYn = "Y";
|
|
}else{
|
|
successYn = "F";
|
|
}
|
|
|
|
} catch (EgovBizException e) {
|
|
LOGGER.error("Error in selectCmmWebzineCnfirm()", e);
|
|
}
|
|
model.addAttribute("successYn", successYn);
|
|
return "/kccf/cmm/webzineMessage";
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/nvodView.do")
|
|
public String cmmNvodView(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
String nvod = paramMap.getString("nvod");
|
|
|
|
String rfType = ""; // RIS일 경우 "R" (Constant.UA_TYPE_R)
|
|
String contentId = ""; // asset media id
|
|
String assetType = "";
|
|
String fileNm = "";
|
|
String sFileNm = "";
|
|
String mainImg = "";
|
|
if (nvod.startsWith("Z")) { // nvod="Z+인터페이스ID" (웹진)
|
|
if (nvod.length() > 1) {
|
|
// interface_id 로 media_id 구하기
|
|
DataMap mediaParamMap = new DataMap();
|
|
mediaParamMap.put("interfaceId", nvod.substring(1));
|
|
mediaParamMap.put("useAt", "Y");
|
|
DataMap mediaMap = cmmService.selectCmmAmsAssetsMediaDetailByInterfaceId(mediaParamMap);
|
|
if (mediaMap != null){
|
|
contentId = mediaMap.getString("id");
|
|
assetType = mediaMap.getString("assetType");
|
|
}
|
|
|
|
// 동영상파일명
|
|
fileNm = mediaMap.getString("streFileName");
|
|
model.addAttribute("fileNm", fileNm);
|
|
// 자막파일명
|
|
sFileNm = mediaMap.getString("subtitleStreFileName");
|
|
model.addAttribute("sFileNm", sFileNm);
|
|
// 자막파일명
|
|
mainImg = mediaMap.getString("mainImg");
|
|
model.addAttribute("mainImg", mainImg);
|
|
|
|
model.addAttribute("mediaMap", mediaMap);
|
|
}
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotEmpty(contentId)) {
|
|
String jsessionId = CmmUtil.getCookieId(request);
|
|
// 미디어 활동이력 (원문보기 이력) 등록
|
|
DataMap hstParamMap = new DataMap();
|
|
hstParamMap.put("jsessionId", jsessionId);
|
|
hstParamMap.put("contentId", contentId);
|
|
hstParamMap.put("assetType", assetType);
|
|
hstParamMap.put("linkUrl", request.getRequestURI()+"?"+request.getQueryString());
|
|
String uaType = rfType; // rfType 값이 넘어온 경우 그대로 사용
|
|
if (StringUtils.isEmpty(uaType)) {
|
|
if (CmmUtil.isMobile(request)) uaType = Constant.UA_TYPE_M;
|
|
else uaType = Constant.UA_TYPE_W;
|
|
}
|
|
hstParamMap.put("uaType", uaType);
|
|
cmmService.insertCmmActivityMediaHst(hstParamMap);
|
|
}
|
|
|
|
return "/kccf/cmm/vodView";
|
|
}
|
|
|
|
// 미디어 기준의 목록(레이어 원문보기용)
|
|
@RequestMapping(value="/cmm/cmmNvodViewLayer.do")
|
|
public String cmmNvodViewLayer(
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
paramMap.setString("aid", paramMap.getString("aId"));
|
|
paramMap.setString("mid", paramMap.getString("mId"));
|
|
|
|
// AssetMedia 목록
|
|
String rsUrl = "";
|
|
String assetType = "";
|
|
|
|
// 비디오
|
|
rsUrl = "/kccf/cmm/layerNvodViewAjax";
|
|
assetType = Constant.M_TYPE_ARRAY[1];
|
|
|
|
paramMap.setString("assetType", assetType);
|
|
model.addAttribute("mType", paramMap.getString("mType"));
|
|
model.addAttribute("pageIndex", 1);
|
|
model.addAttribute("lastPageNo", 1);
|
|
|
|
model.addAttribute("cmmOriginViewList", cmmService.selectCmmAmsAssetsOriginViewList(paramMap));
|
|
// ams 서버 패스 정보
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
|
|
return rsUrl;
|
|
}
|
|
|
|
|
|
/**
|
|
* YOURLS의 API를 통해서 단축URL 가져오기
|
|
* @param cmmVO
|
|
* @param model
|
|
* @param commandMap
|
|
* @param req
|
|
* @param res
|
|
* @return
|
|
* @throws EgovBizException
|
|
*/
|
|
@RequestMapping(value="/cmm/shorturl-data.do")
|
|
public ModelAndView shorturl (
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws EgovBizException {
|
|
String returnUrl = "";
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
try {
|
|
String originUrl = URLEncoder.encode(paramMap.getString("url"), "UTF-8");
|
|
URL url = new URL( propertiesService.getString("shorturl.api") + "&action=shorturl&format=xml&title=nculture&url=" + originUrl);
|
|
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
|
con.setRequestMethod("GET");
|
|
//con.setRequestProperty("Authorization", header);
|
|
int responseCode = con.getResponseCode();
|
|
BufferedReader br;
|
|
if(responseCode==200) { // 정상 호출
|
|
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
|
} else { // 에러 발생
|
|
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
|
|
}
|
|
|
|
String inputLine;
|
|
StringBuffer response = new StringBuffer();
|
|
while ((inputLine = br.readLine()) != null) {
|
|
response.append(inputLine);
|
|
}
|
|
br.close();
|
|
|
|
String str = response.toString();
|
|
Pattern pattern = Pattern.compile("<shorturl>(.+?)</shorturl>");
|
|
Matcher matcher = pattern.matcher(str);
|
|
while (matcher.find()) {
|
|
//System.out.println(matcher.group(1));
|
|
returnUrl = matcher.group(1);
|
|
if(matcher.group(1) == null){
|
|
break;
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
System.err.println(e.toString());
|
|
}
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
model.addAttribute("responseData", returnUrl);
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/cmmAssetSecondCategory.do")
|
|
public ModelAndView selectCmmAssetSecondCategoryList(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception{
|
|
DataMap paramMap = DataMap.getParamMap(request);
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
modelAndView.setViewName("jsonView");
|
|
ComDefaultCodeVO CodeVO = new ComDefaultCodeVO();
|
|
CodeVO.setCodeId(Constant.CODE_ID_FMS015);
|
|
CodeVO.setCode(paramMap.getString("code"));
|
|
|
|
// DDDDDDDDDDDDDDDDDDDDD cmmUseService.selectCmmCodeDetail2 부재로 임시 막음 (2021.08.13)
|
|
// model.addAttribute("resultList", cmmUseService.selectCmmCodeDetail2(CodeVO));
|
|
|
|
|
|
return modelAndView;
|
|
}
|
|
|
|
@RequestMapping(value="/cmm/tableOfContentsView.do")
|
|
public String selectLocalCultureListAjax (
|
|
@ModelAttribute("cmmVO") CmmVO cmmVO
|
|
, ModelMap model
|
|
, @RequestParam Map<String, Object> commandMap
|
|
, HttpServletRequest req
|
|
, HttpServletResponse res
|
|
) throws Exception {
|
|
|
|
DataMap paramMap = DataMap.getParamMap(req);
|
|
|
|
DataMap cmmAmsAssetsMediaDetail = null;
|
|
String mediaId = paramMap.getString("mId");
|
|
if(StringUtils.isNotEmpty(mediaId)){
|
|
// 미디어 ID 맵핑
|
|
if (StringUtils.isEmpty(paramMap.getString("mId"))) paramMap.setString("mId", mediaId);
|
|
|
|
// 에셋 미디어 상세정보(원문보기 쪽 상세정보)
|
|
cmmAmsAssetsMediaDetail = cmmService.selectCmmAmsAssetsMediaDetail(paramMap);
|
|
List<CmmAmsDocTableOfContentsVO> tableOfContentsList = CmmUtil.parseTableOfContents(cmmAmsAssetsMediaDetail.getString("tableOfContents"));
|
|
cmmAmsAssetsMediaDetail.put("tableOfContentsList", tableOfContentsList);
|
|
|
|
if (cmmAmsAssetsMediaDetail.getInt("ocrSplitNum") > 1) {
|
|
cmmAmsAssetsMediaDetail.put("mediaOcrList", cmmService.selectCmmAmsAssetsMediaOcrList(paramMap));
|
|
}
|
|
}
|
|
|
|
// 상세정보
|
|
model.addAttribute("cmmAmsAssetsMediaDetail", cmmAmsAssetsMediaDetail);
|
|
|
|
paramMap.setString("jsessionId", CmmUtil.getCookieId(req));
|
|
CmmUtil.setAmsPathModelMap(req,model);
|
|
|
|
return "/kccf/cmm/layerTableOfContentsAjax";
|
|
}
|
|
|
|
}
|