package com.prolog.rdc.tms.service;

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

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.LmsTmsZoneDTO;
import com.prolog.rdc.tms.model.dto.LmsTmsZoneMinDTO;
import com.prolog.rdc.tms.model.dto.ProvinceZoneDTO;
import com.prolog.rdc.tms.model.entity.LmsTmsZoneModel;
import com.prolog.rdc.tms.model.vo.LmsTmsZoneQueryVO;
import com.prolog.rdc.tms.model.vo.LmsTmsZoneVO;

/**
 * 
 *
 * 行政区域 Service
 *
 * @className :LmsTmsZoneService
 * @author :fanzw
 * @creationTime :2020/07/03
 * @description :
 * @modifier :fanzw
 * @modifyTime :2020/07/03
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface LmsTmsZoneService {

	/**
	 * 根据上级编号(fatherid)获取区域信息
	 * 
	 * @param map
	 * @return
	 */
	List<LmsTmsZoneDTO> getZoneByFatherid(LmsTmsZoneVO lmstmszonevo);

	void deleteZoneById(String zoneid);

	void deleteZone(List<LmsTmsZoneModel> list) throws Exception;

	LmsTmsZoneModel getZoneById(String zoneid);

	List<LmsTmsZoneModel> getZoneByIds(List<String> zoneIds);

	List<LmsTmsZoneDTO> getZone();

	List<LmsTmsZoneDTO> getFatheridIsNull();

	/**
	 * 通过上级区域找下级区域(默认查顶级区域)
	 * 
	 * @author daiyc
	 * @createDate 2019年3月4日
	 * @param param
	 * @return
	 * @Modification history:
	 */
	List<Map<String, Object>> getDropDownList(Map<String, Object> param);

	/**
	 * 行政区域新增
	 * 
	 * @param list
	 */
	void insertZoneData(LmsTmsZoneVO lmstmszonevo) throws Exception;

	/**
	 * 行政区域修改
	 * 
	 * @param lmstmszonevo
	 */
	void updateZoneByIdData(LmsTmsZoneVO lmstmszonevo) throws Exception;

	Page<LmsTmsZoneDTO> getZoneByPage(int pageNum, int pageSize);

	/**
	 * 根据名称查询行政区域编码
	 * 
	 * @param lmstmszonequeryvo
	 * @return
	 * @throws Exception
	 */
	List<LmsTmsZoneDTO> getLmsTmsZoneByNameData(LmsTmsZoneQueryVO lmstmszonequeryvo) throws Exception;

	/**
	 * 根据名称/编码查询行政区域
	 * 
	 * @param lmstmszonevo
	 * @return
	 */
	Page<LmsTmsZoneModel> getZoneByConditions(LmsTmsZoneVO lmstmszonevo);

	/**
	 * 获取所有行政区
	 *
	 * @return
	 */
	List<LmsTmsZoneDTO> getAllZone();

	/**
	 * 获取所有行政区
	 *
	 * @return
	 */
	List<ProvinceZoneDTO> getAllProvinceCityDistrict();

	/**
	 * 获取所有行政区
	 *
	 * @return
	 */
	List<LmsTmsZoneMinDTO> getAllZoneMin();

}
