소장자료 상세조회 목차, 유사한자료, 함께볼만한자료 개발

This commit is contained in:
JSYOO 2021-11-15 17:57:07 +09:00
parent 980d0d5865
commit 48c4cb7761
8 changed files with 138 additions and 211 deletions

View File

@ -99,5 +99,21 @@ public interface CollectionService {
* @param colVO * @param colVO
*/ */
public void insertDataInquiryLog(CollectionVO colVO) throws Exception; public void insertDataInquiryLog(CollectionVO colVO) throws Exception;
/**
* 함께 볼만한 자료 리스트
* @param vo
* @return
* @throws Exception
*/
public List<CollectionVO> selectSeeTogetherList(CollectionVO vo) throws Exception;
/**
* 유사한 자료 리스트
* @param vo
* @return
* @throws Exception
*/
public List<CollectionVO> selectSimilarList(CollectionVO vo) throws Exception;
} }

View File

@ -104,7 +104,15 @@ public class CollectionVO extends PagingVO {
protected String regId; /* 등록자ID */ protected String regId; /* 등록자ID */
protected String modId; /* 변경자ID */ protected String modId; /* 변경자ID */
protected String mUseYn; /* 관심여부 */ protected String mUseYn; /* 관심여부 */
protected String digitalReadYn; /**/
public String getDigitalReadYn() {
return digitalReadYn;
}
public void setDigitalReadYn(String digitalReadYn) {
this.digitalReadYn = digitalReadYn;
}
//-------------------------------------------- //--------------------------------------------
// 카트/관심 항목 // 카트/관심 항목
//-------------------------------------------- //--------------------------------------------
@ -145,6 +153,11 @@ public class CollectionVO extends PagingVO {
protected String resultCode; /* 결과코드 */ protected String resultCode; /* 결과코드 */
protected String resultMessage; /* 결과메시지 */ protected String resultMessage; /* 결과메시지 */
//---------------------------------------------
// 상세조회 페이지 함께 볼만한 자료관련
//---------------------------------------------
protected String deptNm; /* 관리부서이름 */
protected String domainHostNm; /* 관리부서 호스트주소 */
// 생성자 // 생성자
public CollectionVO() { public CollectionVO() {
super(); super();
@ -824,6 +837,21 @@ public class CollectionVO extends PagingVO {
public void setTypeDivNm(String typeDivNm) { public void setTypeDivNm(String typeDivNm) {
this.typeDivNm = typeDivNm; this.typeDivNm = typeDivNm;
} }
public String getDeptNm() {
return deptNm;
}
public void setDeptNm(String deptNm) {
this.deptNm = deptNm;
}
public String getDomainHostNm() {
return domainHostNm;
}
public void setDomainHostNm(String domainHostNm) {
this.domainHostNm = domainHostNm;
}
} }

View File

@ -1,5 +1,7 @@
package nlib.col.service.impl; package nlib.col.service.impl;
import java.util.List;
import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.col.service.CollectionVO; import nlib.col.service.CollectionVO;
@ -9,4 +11,8 @@ public interface CollectionDAO {
public CollectionVO selectMngOrgInfo(String masterId) throws Exception; public CollectionVO selectMngOrgInfo(String masterId) throws Exception;
public void insertDataInquiryLog(CollectionVO vo) throws Exception; public void insertDataInquiryLog(CollectionVO vo) throws Exception;
public List<CollectionVO> selectSeeTogetherList(CollectionVO vo) throws Exception;
public List<CollectionVO> selectSimilarList(CollectionVO vo) throws Exception;
} }

View File

@ -306,5 +306,25 @@ public class CollectionServiceImpl implements CollectionService {
public void insertDataInquiryLog(CollectionVO colVO) throws Exception { public void insertDataInquiryLog(CollectionVO colVO) throws Exception {
collectionDAO.insertDataInquiryLog(colVO); collectionDAO.insertDataInquiryLog(colVO);
} }
/**
* 함께 볼만한 자료 리스트
*
* @param vo
* @return
*/
public List<CollectionVO> selectSeeTogetherList(CollectionVO vo) throws Exception {
return collectionDAO.selectSeeTogetherList(vo);
}
/**
* 유사한 자료 리스트
*
* @param vo
* @return
*/
public List<CollectionVO> selectSimilarList(CollectionVO vo) throws Exception {
return collectionDAO.selectSimilarList(vo);
}
} }

View File

@ -261,8 +261,10 @@ public class NlibSearchController extends NlibCommonController {
, HttpServletRequest request , HttpServletRequest request
, HttpServletResponse res , HttpServletResponse res
) throws Exception { ) throws Exception {
HttpSession session = request.getSession();
String masterId = request.getParameter("masterId"); String masterId = request.getParameter("masterId");
String mbInfoId = getMbInfoId(request); String mbInfoId = getMbInfoId(request);
List<String> mngOrgList = new ArrayList<>();
//사용자 정보를 가져온다. //사용자 정보를 가져온다.
NlibLoginVO loginVO = getNlibLoginVO(authentication); NlibLoginVO loginVO = getNlibLoginVO(authentication);
@ -271,7 +273,28 @@ public class NlibSearchController extends NlibCommonController {
vo.setMasterId(masterId); vo.setMasterId(masterId);
vo.setMbInfoId(mbInfoId); vo.setMbInfoId(mbInfoId);
vo = collectionService.getItemInfo(vo,NlibProperty.getString("thumbnail.image.url.big")); vo = collectionService.getItemInfo(vo,NlibProperty.getString("thumbnail.image.url.big"));
String councilCd = (String)session.getAttribute("councilCd");
vo.setMngOrgCd(councilCd);
//함께 볼만한 자료
List<CollectionVO> seeTogetherListVO = collectionService.selectSeeTogetherList(vo);
//유사한 자료
List<CollectionVO> similarListVO = collectionService.selectSimilarList(vo);
//관리부서명 중복 제외하고 리스트생성
for(int i=0; similarListVO.size() > i; i++)
{
if(!mngOrgList.contains(similarListVO.get(i).getDeptNm()))
{
mngOrgList.add(similarListVO.get(i).getDeptNm());
}
}
model.addAttribute("seeTogetherListVO", seeTogetherListVO);
model.addAttribute("similarListVO", similarListVO);
model.addAttribute("mngOrgList",mngOrgList);
//반납예정일 편집 //반납예정일 편집
if(!(vo == null) && !StringUtil.getString(vo.getRtnExpctDd(),"").equals("")) if(!(vo == null) && !StringUtil.getString(vo.getRtnExpctDd(),"").equals(""))
{ {

View File

@ -3,14 +3,14 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="nlib.col.service.impl.CollectionDAO"> <mapper namespace="nlib.col.service.impl.CollectionDAO">
<select id="selectMngOrgInfo" parameterType="String" resultType="CollectionVO"> <select id="selectMngOrgInfo" parameterType="String" resultType="CollectionVO">
SELECT SELECT
A.MNG_ORG_CD A.MNG_ORG_CD
, B.DEPT_NM AS MNG_ORG_NM , B.DEPT_NM AS MNG_ORG_NM
FROM RG_MASTER A FROM RG_MASTER A
LEFT OUTER JOIN SM_DEPT B ON A.MNG_ORG_CD = B.ORG_CD LEFT OUTER JOIN SM_DEPT B ON A.MNG_ORG_CD = B.ORG_CD
WHERE A.MASTER_ID = #{masterId} WHERE A.MASTER_ID = #{masterId}
</select> </select>
<insert id="insertDataInquiryLog" parameterType="CollectionVO"> <insert id="insertDataInquiryLog" parameterType="CollectionVO">
INSERT INTO MB_VIEW_LOG( INSERT INTO MB_VIEW_LOG(

View File

@ -57,6 +57,14 @@ $(document).ready(function(){
}) })
//다른자료 상세보기
function goDetail(masterId){
$("#masterId").val(masterId);
document.referenceDetailForm.action="/search/searchItemDetail.do";
document.referenceDetailForm.submit();
}
function goList(){ function goList(){
document.referenceDetailForm.action="/search/searchList.do"; document.referenceDetailForm.action="/search/searchList.do";
document.referenceDetailForm.submit(); document.referenceDetailForm.submit();
@ -88,8 +96,8 @@ function goList(){
<input type="hidden" name="ageCode" value="<c:out value='${searchVO.ageCode}'/>"/> <input type="hidden" name="ageCode" value="<c:out value='${searchVO.ageCode}'/>"/>
<input type="hidden" name="collectionList" value="<c:out value='${searchVO.collectionList}'/>"/> <input type="hidden" name="collectionList" value="<c:out value='${searchVO.collectionList}'/>"/>
<input type="hidden" name="realQuery" value="<c:out value='${searchVO.realQuery}'/>"/> <input type="hidden" name="realQuery" value="<c:out value='${searchVO.realQuery}'/>"/>
<input type="hidden" id="masterId" name="masterId" value="" />
<h2 class="blind">소장자료 상세페이지 섹션영역</h2> <h2 class="blind">소장자료 상세페이지 섹션영역</h2>
<div class="inner"> <div class="inner">
<div class="row-top"> <div class="row-top">
@ -277,10 +285,11 @@ function goList(){
<button type="button" class="down-btn">down-btn</button> <button type="button" class="down-btn">down-btn</button>
</div> </div>
<div class="bottom h-down"> <div class="bottom h-down">
<p><c:out value="${result.bookIndex }"/></p> <p><c:if test="${empty result.bookIndex }">없음</c:if><c:out value="${result.bookIndex }"/></p>
</div> </div>
</div> </div>
<c:if test="${fn:length(seeTogetherListVO) > 0 }">
<div class="con-3"> <div class="con-3">
<div class="bottom"> <div class="bottom">
<!-- Swiper --> <!-- Swiper -->
@ -289,77 +298,21 @@ function goList(){
<h3><span>함께 볼만한</span>자료</h3> <h3><span>함께 볼만한</span>자료</h3>
</div> </div>
<div class="swiper-wrapper"> <div class="swiper-wrapper">
<c:forEach var="result" items="${seeTogetherListVO}" varStatus="status">
<div class="swiper-slide"> <div class="swiper-slide">
<div class="List"> <div class="List" onclick="goDetail('${result.masterId}');">
<div class="con-1"> <div class="con-1">
<div class="tit underline pink">국역 경주읍지</div> <div class="tit underline pink">${result.title }</div>
</div> </div>
<div class="con-2"> <div class="con-2">
<p class="typ"><span>자료유형</span><span>도서간행물 &gt; 연속간행물</span></p> <p class="typ"><span>자료유형</span><span><c:if test="${empty result.typeDivNm and empty result.dtlsTypeDivNm}">-</c:if> ${result.typeDivNm } <c:if test="${!empty result.typeDivNm and !empty result.dtlsTypeDivNm}">&gt;</c:if>${result.dtlsTypeDivNm}</span></p>
<p class="sub"><span>주제분야</span><span>자연과지리 &gt; 자연환경</span></p> <p class="sub"><span>주제분야</span><span><c:if test="${empty result.subjectNmUp and empty result.subjectNm}">-</c:if> ${result.subjectNm } <c:if test="${!empty result.subjectNmUp and !empty result.subjectNm}">&gt;</c:if>${result.subjectNm}</span></span></p>
<p class="age"><span>생산기관</span><span>경북경주문화원</span></p> <p class="age"><span>생산기관</span><span><c:if test="${empty result.orgNm }">-</c:if>${result.orgNm }</span></p>
<p class="yea"><span>생산년도</span><span>2003</span></p> <p class="yea"><span>생산년도</span><span><c:if test="${empty result.creatYyyy }">-</c:if>${result.creatYyyy }</span></p>
</div> </div>
</div> </div>
</div> </div>
</c:forEach>
<div class="swiper-slide">
<div class="List">
<div class="con-1">
<div class="tit underline pink">국역 경주읍지</div>
</div>
<div class="con-2">
<p class="typ"><span>자료유형</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도</span><span>2003</span></p>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="con-1">
<div class="tit underline pink">국역 경주읍지</div>
</div>
<div class="con-2">
<p class="typ"><span>자료유형</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도</span><span>2003</span></p>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="con-1">
<div class="tit underline pink">국역 경주읍지</div>
</div>
<div class="con-2">
<p class="typ"><span>자료유형</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도</span><span>2003</span></p>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="con-1">
<div class="tit underline pink">국역 경주읍지</div>
</div>
<div class="con-2">
<p class="typ"><span>자료유형</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도</span><span>2003</span></p>
</div>
</div>
</div>
</div> </div>
<div class="swiper-button-next"></div> <div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div> <div class="swiper-button-prev"></div>
@ -368,162 +321,40 @@ function goList(){
<!-- Swiper end --> <!-- Swiper end -->
</div> </div>
</div> </div>
</c:if>
</div> </div>
<div class="row-bottom"> <div class="row-bottom">
<c:if test="${fn:length(similarListVO) > 0 }">
<div class="con-4"> <div class="con-4">
<div class="top"> <div class="top">
<h3><span>이 자료와 유사한</span>자료</h3> <h3><span>이 자료와 유사한</span>자료</h3>
<p><strong>“ 경산문화원, 경주문화원, 고령문화 ”</strong> 에 있습니다</p> <p><strong>“ <c:forEach items="${mngOrgList }" var="list" varStatus="status"><c:if test="${status.count ne 1}"> ,</c:if>${list }</c:forEach> ”</strong> 에 있습니다</p>
</div> </div>
<div class="bottom"> <div class="bottom">
<!-- Swiper --> <!-- Swiper -->
<div class="swiper DetailSwiper2"> <div class="swiper DetailSwiper2">
<div class="swiper-wrapper items cover"> <div class="swiper-wrapper items cover">
<c:forEach var="result" items="${similarListVO}" varStatus="status">
<div class="swiper-slide"> <div class="swiper-slide">
<div class="List"> <div class="List" onclick="gfn_getDetail('${result.masterId}','${result.domainHostNm }');">
<div class="inner"> <div class="inner">
<div class="thumbnail"> <div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span> <span class="image-frame"><img src="${result.rprsThumbUrlWithDefault }" alt=""/></span>
<div class="detail-cover"> <div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong> <strong>${result.title }</strong>
<ul> <ul>
<li><em>주제유형</em>도서간행물</li> <li><em>주제유형</em><c:if test="${empty result.typeDivNm}">-</c:if>${result.typeDivNm }</li>
<li><em>주제분야</em>문화유산</li> <li><em>주제분야</em><c:if test="${empty result.subjectNmUp}">-</c:if>${result.subjectNmUp }</li>
<li><em>생산기관</em>마포문화원</li> <li><em>생산기관</em><c:if test="${empty result.orgNm }">-</c:if>${result.orgNm }</li>
<li><em>생산년도</em>미상</li> <li><em>생산년도</em><c:if test="${empty result.creatYyyy }">-</c:if>${result.creatYyyy }</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<div class="List">
<div class="inner">
<div class="thumbnail">
<span class="image-frame"><img src="/images/img/img-sec6-01.jpg" alt=""/></span>
<div class="detail-cover">
<strong>2011 신라문화스토리텔러 교육교재 이론</strong>
<ul>
<li><em>주제유형</em>도서간행물</li>
<li><em>주제분야</em>문화유산</li>
<li><em>생산기관</em>마포문화원</li>
<li><em>생산년도</em>미상</li>
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</c:forEach>
</div> </div>
<div class="swiper-button-next"></div> <div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div> <div class="swiper-button-prev"></div>
@ -532,7 +363,7 @@ function goList(){
<!-- Swiper end --> <!-- Swiper end -->
</div> </div>
</div> </div>
</c:if>
<div class="btn-box"> <div class="btn-box">
<button type="button" class="btn btn-black" onclick="goList();">목록으로</button> <button type="button" class="btn btn-black" onclick="goList();">목록으로</button>
</div> </div>

View File

@ -534,11 +534,14 @@ function gfn_gotoUrl(url) {
location.href = url; location.href = url;
} }
function gfn_getDetail(masterId) { function gfn_getDetail(masterId, host) {
if(fn_isEmpty(host)) host = "";
else host = "https://" + host + ".nculture.org";
var form = document.createElement("form"); var form = document.createElement("form");
form.style.display = "none"; form.style.display = "none";
$(form).attr("action", "/search/searchItemDetail.do"); $(form).attr("action", host + "/search/searchItemDetail.do");
$(form).attr("method", "post"); $(form).attr("method", "post");
$(form).attr("target", "_blank"); $(form).attr("target", "_blank");