package com.dy.pipIrrBase.district; 
 | 
  
 | 
import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper; 
 | 
import com.dy.pipIrrGlobal.pojoBa.BaDistrict; 
 | 
import com.dy.pipIrrGlobal.util.DistrictLevel; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
@Slf4j 
 | 
@Service 
 | 
public class DistrictSv { 
 | 
  
 | 
    private BaDistrictMapper dao; 
 | 
  
 | 
    @Autowired 
 | 
    private void setDao(BaDistrictMapper dao){ 
 | 
        this.dao = dao; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 从第一级行政区划开始,得到所有行政区划信息 
 | 
     * @param firstLevel 第一级行下区 level 
 | 
     * @return 所有行政区划集合 
 | 
     */ 
 | 
    public List<BaDistrict> selectAllByLevel(byte firstLevel){ 
 | 
        List<BaDistrict> list = this.dao.selectByLevel(firstLevel) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            for(BaDistrict po : list){ 
 | 
                po.canDelete = false ; 
 | 
                po.canAdd = true ; 
 | 
                getSubDistrict(po) ; 
 | 
            } 
 | 
        } 
 | 
        return list ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到一个行政区 
 | 
     * @param id 行政区ID 
 | 
     * @return 行政区实体 
 | 
     */ 
 | 
    public BaDistrict selectById(Long id){ 
 | 
        return this.dao.selectByPrimaryKey(id) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存实体 
 | 
     * @param po 实体 
 | 
     * @return 数量 
 | 
     */ 
 | 
    @Transactional 
 | 
    public int save(BaDistrict po){ 
 | 
        return this.dao.putin(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存修改实体 
 | 
     * @param po 实体 
 | 
     * @return 数量 
 | 
     */ 
 | 
    @Transactional 
 | 
    public int update(BaDistrict po){ 
 | 
        return this.dao.updateByPrimaryKeySelective(po) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 保存修改实体 
 | 
     * @param id 实体ID 
 | 
     * @return 数量 
 | 
     */ 
 | 
    @Transactional 
 | 
    public int delete(Long id){ 
 | 
        return this.dao.deleteLogicById(id) ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 得到下级行政区划 
 | 
     * @param po 上级行政区划 
 | 
     */ 
 | 
    private void getSubDistrict(BaDistrict po){ 
 | 
        if(po != null && po.id != null){ 
 | 
            po.subDistricts = this.dao.selectBySupperId(po.id) ; 
 | 
            if(po.subDistricts != null && po.subDistricts.size() > 0){ 
 | 
                for(BaDistrict subPo : po.subDistricts){ 
 | 
                    getSubDistrict(subPo) ; 
 | 
                } 
 | 
            }else{ 
 | 
                //没有下级了,可以删除 
 | 
                po.canDelete = false ; 
 | 
                if(po.level.code.byteValue() == DistrictLevel.Village.code.byteValue()){ 
 | 
                    //到村级了,不可以再添加行政区了 
 | 
                    po.canAdd = false ; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据级别获取行政区划列表 
 | 
     * @param level 
 | 
     * @return 
 | 
     */ 
 | 
    public List<Map<String, Object>> getDistrictgsByLevel(Integer level) { 
 | 
        return dao.getDistrictgsByLevel(level); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据父ID获取行政区划列表 
 | 
     * @param supperId 
 | 
     * @return 
 | 
     */ 
 | 
    public List<Map<String, Object>> getDistrictsBySupperId(Long supperId) { 
 | 
        return dao.getDistrictsBySupperId(supperId); 
 | 
    } 
 | 
} 
 |