package nlib.col.service.impl; import java.util.HashMap; import java.util.List; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Service; import nlib.col.service.CollectionService; import nlib.col.service.CollectionVO; import nlib.restful.DataApi; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.restful.service.XmlConverter; import nlib.util.StringUtil; /** *
 * @Class Name : CollectionServiceImpl.java
 * 
 * @Description : 소장자료 정보를 조회하는 서비스
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * 
* * @ ------------ -------- --------------------------- * @ 수정일 수정자 수정내용 * @ ------------ -------- --------------------------- * @ 2021. 10. 6. KNKIM 최초 생성 * * * @author 이씨플라자 * DIGITALSHIP KNKIM * @since 2021. 10. 6. * @version 1.0 * */ @Service("collectionService") public class CollectionServiceImpl implements CollectionService { private static final Logger log = LoggerFactory.getLogger(CollectionServiceImpl.class); /** RESTFul API 송수신 모듈 */ @Resource(name = "dataApi") private DataApi dataApi; @Resource(name="collectionDAO") private CollectionDAO collectionDAO; /** * 자료 상세정보를 조회한다. * * @param searchVO * @return * @throws Exception */ public CollectionVO getItemInfo(CollectionVO searchVO) throws Exception { String message = null; // 입력값 확인 String masterId = searchVO.getMasterId(); String mbInfoId = searchVO.getMbInfoId(); if(StringUtil.isEmpty(masterId)) { message = "[필수값 미입력] 자료 ID 정보가 입력되지 않았습니다."; return new CollectionVO("E102", message); } // 변수 설정 DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/getItemInfo", HttpMethod.GET); reqVO.putInfoItem("masterId", masterId); reqVO.setMbInfoId(mbInfoId); // 통신 시, 암호화되어 송수신됨 // API 호출 DataApiResVO resVO = dataApi.request(reqVO); // 결과값 전달 CollectionVO retVO = (CollectionVO)XmlConverter.convertMapToObject(resVO.getInfo(), CollectionVO.class); retVO.setResultCode(resVO.getResultCode()); retVO.setResultMessage(resVO.getResultMessage()); return retVO; } /** * 목록의 자료정보에 상세정보를 조회하여 설정한 후 리턴한다. * * @param list * @return * @throws Exception */ public List setDetailInfoForList(List list) throws Exception { return setDetailInfoForList(list, null, null); } /** * 목록의 자료정보에 상세정보를 조회하여 설정한 후 리턴한다. * * @param list * @param mbInfoId * @param defaultThumbnailUrl * @return * @throws Exception */ public List setDetailInfoForList(List list, String mbInfoId, String defaultThumbnailUrl) throws Exception { if(list == null || list.size() < 1) return list; int cnt = list.size(); HashMap collectionMap = new HashMap(); // 문화원별 API 요청 처리 String jsonMasterId = ""; for(int i=0; i 0) jsonMasterId += ","; jsonMasterId += "{\"masterId\":\"" + vo.getMasterId() + "\"}"; } if(StringUtil.isEmpty(jsonMasterId)) return list; jsonMasterId = "[" + jsonMasterId + "]"; // API 호출 DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/listItemInfo", HttpMethod.GET); reqVO.setMbInfoId(mbInfoId); // 통신 시, 암호화되어 송수신됨 reqVO.putInfoItem("jsonMasterId", jsonMasterId); DataApiResVO resVO = dataApi.request(reqVO); // 결과 처리 if(resVO.getResultCode().charAt(0) == 'S') { List> recordList = resVO.getList("record"); if(recordList == null || recordList.size() < 1) return list; for(HashMap record : recordList) { CollectionVO cVO = (CollectionVO)XmlConverter.convertMapToObject(record, CollectionVO.class); if(cVO != null && StringUtil.isNotEmpty(cVO.getMasterId())) { collectionMap.put(cVO.getMasterId(), cVO); } } } else { log.error("setDetailInfoForCartItems > 소장자료 다건 메타정보 조회 오류(API) : " + resVO.getResultCode() + " : " + resVO.getResultMessage()); } // 목록에 업데이트 설정 for(int i=0; i