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.CollectionVO; import nlib.col.service.ReadService; import nlib.info.service.InformService; import nlib.restful.DataApi; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.util.StringUtil; @Service("readService") public class ReadServiceImpl implements ReadService { private static final Logger log = LoggerFactory.getLogger(ReadServiceImpl.class); @Resource(name="readDAO") private ReadDAO readDAO; @Resource(name="informService") private InformService informService; /** RESTFul API 송수신 모듈 */ @Resource(name = "dataApi") private DataApi dataApi; /** * 열람신청희망 가능 일자 목록을 조회한다. * * @param mbInfoId * @return */ public List> listDates() { return readDAO.listDates(); } /** * 열람을 신청한다. * * @param list * @param mbInfoId * @param mngOrgCd * @return */ public List insertReadItems(List list, String mbInfoId, CollectionVO readVO) throws Exception { if(list == null || list.size() < 1) { log.error("insertReadItems > 열람 신청 대상 목록이 없습니다."); return null; } if(readVO == null) { log.error("insertReadItems > 매개변수 readVO는 null일 수 없습니다."); return null; } if(StringUtil.isEmpty(mbInfoId)) { log.error("insertReadItems > 사용자ID를 확인할 수 없습니다."); return null; } if(StringUtil.isEmpty(readVO.getMngOrgCd())) { log.error("insertReadItems > 관리문화원 코드를 확인할 수 없습니다."); return null; } if(StringUtil.isEmpty(readVO.getHopeReqPridDtmFrom() )) { log.error("insertReadItems > 방문희망일 시작일자를 확인할 수 없습니다."); return null; } if(StringUtil.isEmpty(readVO.getHopeReqPridDtmTo() )) { log.error("insertReadItems > 방문희망일 종료일자를 확인할 수 없습니다."); return null; } if(readVO.getHopeReqPridDtmFrom().compareTo(readVO.getHopeReqPridDtmTo()) > 0) { log.error("insertReadItems > 방문희망일 종료일자는 시작일자 이후이어야 합니다."); return null; } // 해당 문화원의 업무시간 조회 HashMap operation = informService.selectNCultureOpenTime(readVO.getMngOrgCd()); // API 호출 /* mngOrgCd 문화원코드 O String SU01 mbInfoId 사용자아이디 O String "BDCCAF34CF8AA365C660ADB121CE6741 (ARIAUtil 암호화)" jsonMasterId 자료번호목록 O String [{"masterId":"xxxx"}, {"masterId":"xxxb"},…] hopeReqPridDtmFrom 희망열람기간시작일자 O String 202109071300 hopeReqPridDtmTo 희망열람기간종료일자 O String 202109101400 purpose 열람목적 String 열람목적 */ DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/insertReserveItem", HttpMethod.POST); reqVO.setMbInfoId(mbInfoId); // 통신 시, 암호화되어 송수신됨 reqVO.putInfoItem("mngOrgCd" , readVO.getMngOrgCd()); reqVO.putInfoItem("hopeReqPridDtmFrom", readVO.getHopeReqPridDtmFrom().replaceAll("-", "") + StringUtil.getString(operation.get("OPEN_TIME"), "0900").replaceAll(":", "").substring(0, 4)); reqVO.putInfoItem("hopeReqPridDtmTo" , readVO.getHopeReqPridDtmTo().replaceAll("-", "") + StringUtil.getString(operation.get("CLOSED_TIME"), "1800").replaceAll(":", "").substring(0, 4)); CollectionVO cVO = null; DataApiResVO resVO = null; String jsonMasterId = ""; for(int i=0; i 열람 신청 대상으로 생성된 목록이 없습니다."); return null; } jsonMasterId = "[" + jsonMasterId.substring(1) + "]"; reqVO.putInfoItem("jsonMasterId", jsonMasterId); resVO = dataApi.request(reqVO); CollectionVO rVO = null; cVO.setResult(resVO.getResultCode(), resVO.getResultMessage()); readVO.setResultCode(resVO.getResultCode()); readVO.setResultMessage(resVO.getResultMessage()); // 대출예약번호/일자 설정 (rsrvId) if(StringUtil.startsWithIgnoreCase(resVO.getResultCode(), "S")) { readVO.setHopeReqPridDtmFrom(StringUtil.formatDateStr(resVO.getInfoItem("hopeReqPridDtmFrom", ""),"")); readVO.setHopeReqPridDtmTo(StringUtil.formatDateStr(resVO.getInfoItem("hopeReqPridDtmTo", ""),"")); readVO.setRsrvId(resVO.getInfoItem("reqId", "")); // 열람신청번호 readVO.setRsrvId(resVO.getInfoItem("reqDd", "")); // 열람신청일자 readVO.setSelItems(resVO.getInfoItem("masterId")); // 자료번호 } else { readVO.setRsrvId(null); // 열람신청번호 readVO.setRsrvId(null); // 열람신청일자 } return list; } }