/** 
 * FaEquipmentService.java
 * @author 임새미 
 * @since 2016. 10. 13.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 13. 	    임새미				       최초생성
 * 
 */
package kcg.faics.equip.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import kcg.faics.equip.vo.EquipSearchVO;
import kcg.faics.equip.vo.EquipVO;

/** 
 * FaEquipmentService.java
 * @author 임새미 
 * @since 2016. 10. 13.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 13. 	    임새미				       최초생성
 * 
 */
public interface EquipmentService {

	/**
	 * 외사 경찰의 장비 보유 현황을 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	List<HashMap<String, Object>> getEquipmentList() throws Exception;
	
	/**
	 * 외사장비의 사용실적을 가져온다.
	 * 
	 * @param params 파라미터 맵
	 * 			type - 사용 or 점검, year - 대상 연도, quater - 대상 분기
	 * @return 결과 데이터를 담은 map 리스트
	 */
	List<HashMap<String, Object>> getEquipUseStateList(EquipSearchVO searchVO) throws Exception;
	
	/**
	 * 외사장비의 사용실적 기록 연도 리스트를 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	List<HashMap<String, Object>> getEquipYearList() throws Exception;
	
	/**
	 * 외사장비 목록 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	List<HashMap<String, Object>> getEquipmentCodeList() throws Exception;

	/**
	 * 선택한 조건에 해당되는 사용실적을 가져온다.
	 * 
	 * @param params 파라미터 맵
	 * 			place1 - 기관코드 or 점검, year - 대상 연도, quater - 대상 분기
	 * @return 결과 데이터를 담은 map 리스트
	 * @throws Exception 기본 예외 처리
	 */
	List<HashMap<String, Object>> getEquipUseStateInfo(EquipSearchVO searchVO) throws Exception;

	/**
	 * 사용실적을 입력 or 수정한다.
	 * 
	 * @param paramMap 장비별 실적 리스트
	 * @return 결과 데이터를 담은 map 리스트
	 * @throws Exception 기본 예외 처리
	 */
	int insertEquipUseState(EquipSearchVO searchVO, HashMap<String, HashMap<String, Object>> paramMap) throws Exception;
	
	/**
	 * 외사장비목록을 조회한다
	 * 
	 * @param equipSearchVO
	 * @return List<EquipVO>
	 * @throws Exception
	 *             기본 예외 처리
	 */
	List<EquipVO> getEquipList(EquipSearchVO equipSearchVO) throws Exception;
	
	/**
	 * 데이터 한 건을 반환한다.
	 * 
	 * @param dataVO
	 *            조회할 VO (대부분 PK의 값으로 조회한다.)
	 * @return 데이터 한 건
	 * @throws Exception
	 *             기본 예외 처리
	 */
	EquipVO getEquipment(EquipVO equipVO) throws Exception;
	
	/**
	 * 외사장비를 등록한다
	 * 
	 * @param equipVO
	 * @return 데이터 한 건
	 * @throws Exception
	 *             기본 예외 처리
	 */
	HashMap<String, Object> insertEquipment(EquipVO equipVO, final Map<String, MultipartFile> fileMap) throws Exception;
	
	/**
	 * 외사장비를 변경한다
	 * 
	 * @param equipVO
	 * @return 
	 * @throws Exception
	 *             기본 예외 처리
	 */
	HashMap<String, Object> updateEquipment(EquipVO equipVO, final Map<String, MultipartFile> fileMap, final String[] deleteFiles) throws Exception;
	
	/**
	 * 외사장비를 삭제한다.
	 * 
	 * @param equipVO
	 * @return Map("result") = 1 : 성공, <else> : 실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	HashMap<String, Object> deleteEquipment(EquipVO equipVO) throws Exception;
	
	/**
	 * 게시물의 첨부파일들을 업로드한다.
	 * 
	 * @param bfBdSeq 게시물 아이디
	 * @param fileMap 검색, 페이지 정보 객체
	 * @return 성공 - 1, 실패 - 0
	 * @exception Exception 기본 예외 처리
	 */	
//	public int insertAndSaveFiles(BoardFileVO boardFileVO, final Map<String, MultipartFile> fileMap) throws Exception;
}
