package kcg.faics.tg.service.impl;

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

import kcg.faics.tg.vo.WeakPlaceSearchVO;
import kcg.faics.tg.vo.WeakPlaceVO;

import org.springframework.stereotype.Repository;

import egovframework.rte.psl.dataaccess.EgovAbstractMapper;

/**
 * 외사취약지 관련 Mapper 클래스.
 * 
 * @author kimnomin
 *
 */
@Repository("weakPlaceMapper")
public class WeakPlaceMapper extends EgovAbstractMapper {
	/**
	 * 외사취약지 정보를 반환한다.
	 * 
	 * @param vo
	 *            검색정보 VO
	 * @return 외사취약지 VO
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public WeakPlaceVO select(final WeakPlaceVO vo) throws Exception {
		return selectOne("WeakPlace.select", vo);
	}

	/**
	 * 외사취약지 목록을 반환한다.
	 * 
	 * @param vo
	 *            검색정보 VO
	 * @return 외사취약지 목록
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public List<WeakPlaceVO> selectList(final WeakPlaceSearchVO vo)
			throws Exception {
		return selectList("WeakPlace.selectList", vo);
	}
	
	/**
	 * 해당 소속의 마지막 외사취약지 일련번호를 반환한다.
	 * 
	 * @param place1
	 *            소속
	 * @return 마지막 외사취약지 일련번호
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public int selectMaxWpNo(final String place1) throws Exception {
		int wpNo = 0;
		try {
			wpNo = selectOne("WeakPlace.selectMaxWpNo", place1);
		} catch (Exception e) {
			wpNo = 0;
		}
		return wpNo;
	}

	/**
	 * 소속별 외사취약지 통계현황을 반환한다.
	 * 
	 * @param placeList
	 *            통계를 산출할 소속 코드 배열
	 * @return 소속별 외사취약지 통계현황
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public List<HashMap<String, Object>> selectStatsPerPlace(final String[] placeList) throws Exception {
		HashMap<String, String[]> map = new HashMap<String, String[]>();
		map.put("placeList", placeList);
		return selectList("WeakPlace.selectStatsPerPlace", map);
	}
	
	/**
	 * 외사취약지 정보를 입력한다.
	 * 
	 * @param weakPlaceVO
	 *            입력할 외사취약지 VO
	 * @return 1-성공, 0-실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public int insert(final WeakPlaceVO weakPlaceVO) throws Exception {
		return insert("WeakPlace.insert", weakPlaceVO);
	}
	
	/**
	 * 외사취약지 정보를 수정한다.
	 * 
	 * @param weakPlaceVO
	 *            수정할 외사취약지 VO
	 * @return 1-성공, 0-실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public int update(final WeakPlaceVO weakPlaceVO) throws Exception {
		return update("WeakPlace.update", weakPlaceVO);
	}
	
	/**
	 * 외사취약지 정보를 삭제한다.
	 * 
	 * @param weakPlaceVO
	 *            삭제할 외사취약지 VO
	 * @return 1-성공, 0-실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public int delete(final WeakPlaceVO weakPlaceVO) throws Exception {
		return delete("WeakPlace.delete", weakPlaceVO);
	}
}
