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

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

import kcg.faics.arrest.vo.ArrestSearchVO;
import kcg.faics.arrest.vo.ArrestVO;
import kcg.faics.equip.vo.EquipSearchVO;
import kcg.faics.equip.vo.EquipVO;

import org.springframework.stereotype.Repository;

import egovframework.rte.psl.dataaccess.EgovAbstractMapper;

/** 
 * FaEquipmentMapper.java
 * @author 임새미 
 * @since 2016. 10. 13.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 13. 	    임새미				       최초생성
 * 
 */
@Repository("equipmentMapper")
public class EquipmentMapper extends EgovAbstractMapper {

	/**
	 * 외사 경찰의 장비 보유 현황을 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	public List<HashMap<String, Object>> getEquipmentList(HashMap<String, Object> params) {
		return selectList("Equip.getEquipmentList", params);
	}
	
	/**
	 * 외사장비의 사용실적을 가져온다.
	 * 
	 * @param isUseState 
				사용 - true, 점검 - false
	 * @return 결과 데이터를 담은 map 리스트
	 */
	public List<HashMap<String, Object>> getEquipUseStateList(HashMap<String, Object> params) {
		return selectList("Equip.getEquipUseStateList", params);
	}
	
	/**
	 * 외사장비의 사용실적 기록 연도 리스트를 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	public List<HashMap<String, Object>> getEquipYearList() {
		return selectList("Equip.getEquipYearList");
	}
	
	/**
	 * 외사장비 목록 가져온다.
	 * 
	 * @return 결과 데이터를 담은 map 리스트
	 */
	public List<HashMap<String, Object>> getEquipmentCodeList() {
		return selectList("Equip.getEquipmentCodeList");
	}

	/**
	 * 선택한 조건에 해당되는 사용실적 리스트를 가져온다.
	 * 
	 * @param params 파라미터 맵
	 * 			place1 - 기관코드 or 점검, year - 대상 연도, quater - 대상 분기
	 * @return 리턴값 설명
	 * @throws Exception 기본 예외 처리
	 */
	public List<HashMap<String, Object>> getEquipUseStateInfo(EquipSearchVO params) {
		return selectList("Equip.getEquipUseStateInfo", params);
	}
	
	/**
	 * 선택한 조건에 해당되는 사용실적을 가져온다.
	 * 
	 * @param params 파라미터 맵
	 * 			place1 - 기관코드 or 점검, year - 대상 연도, quater - 대상 분기
	 * @return 리턴값 설명
	 * @throws Exception 기본 예외 처리
	 */
	public HashMap<String, Object> getEquipUseStateInfoByCode(HashMap<String, Object> params) {
		return selectOne("Equip.getEquipUseStateInfoByCode", params);
	}

	/**
	 * 외사장비 사용실적을 추가한다.
	 * 
	 * @param params 외사장비 사용실적 데이터 맵
	 * @return 1-성공,  0-실패
	 * @throws Exception 기본 예외 처리
	 */
	public int insertEquipUseState(HashMap<String, Object> params) {
		return update("Equip.insertEquipUseState", params);
	}

	/**
	 * 외사장비 사용실적을 수정한다.
	 * 
	 * @param params 외사장비 사용실적 데이터 맵
	 * @return 1-성공,  0-실패
	 * @throws Exception 기본 예외 처리
	 */
	public int updateEquipUseState(HashMap<String, Object> searchVO) {
		return insert("Equip.updateEquipUseState", searchVO);
	}
	
	/**
	 * 외사장비목록을 조회한다
	 * 
	 * @param equipSearchVO
	 *            검색정보 객체
	 * @return 외사장비목록 반환
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public List<EquipVO> getEquipList(final EquipSearchVO equipSearchVO) throws Exception {
		return selectList("Equip.getEquipList", equipSearchVO);
	}
	
	/**
	 * 외사장비(단건)를 조회한다
	 * 
	 * @param equipVO
	 *            검색정보 객체
	 * @return 외사장비 단건정보 반환
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public EquipVO getEquipment(final EquipVO equipVO) throws Exception {
		return selectOne("Equip.getEquipment", equipVO);
	}
	
	/**
	 * 외사장비를 등록한다.
	 * 
	 * @param equipVO 외사장비 구성 객체
	 * @return result
	 * @throws Exception 기본 예외 처리
	 */
	public HashMap<String, Object> insertEquipment(final EquipVO equipVO) throws Exception {
		
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		
		int result = 0;
		try {
			result = insert("Equip.insertEquipment", equipVO);
			resultMap.put("result", result);
			resultMap.put("serNo", equipVO.getSerNo());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resultMap;
	}
	
	/**
	 * 외사장비를 삭제한다.
	 * 
	 * @param equipVO 외사장비 구성 객체
	 * @return result
	 * @throws Exception 기본 예외 처리
	 */
	public HashMap<String, Object> deleteEquipment(final EquipVO equipVO) throws Exception {
		
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		
		int result = 0;
		try {
			result = delete("Equip.deleteEquipment", equipVO);
			resultMap.put("result", result);
			resultMap.put("serNo", equipVO.getSerNo());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resultMap;
	}
	/**
	 * 외사장비를 수정한다.
	 * 
	 * @param equipVO 외사장비 구성 객체
	 * @return result
	 * @throws Exception 기본 예외 처리
	 */
	public HashMap<String, Object> updateEquipment(final EquipVO equipVO) throws Exception {
		
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		
		int result = 0;
		try {
			result = insert("Equip.updateEquipment", equipVO);
			resultMap.put("result", result);
			resultMap.put("serNo", equipVO.getSerNo());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resultMap;
	}
}
