| 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.deleteByPrimaryKey(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); | 
|     } | 
| } |