package com.zteits.sys.biz; import com.clouds.common.log.LogSelf; import com.clouds.common.utils.ListCopyUtil; import com.clouds.common.utils.LogSelfFactory; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.constants.AreaTypeEnum; import com.zteits.clouds.api.dto.bill.closecarpark.dto.InitSpecialCarDTO; import com.zteits.clouds.api.dto.park.dto.AreaBlockListDTO; import com.zteits.clouds.api.dto.park.param.InitAreaRequest; import com.zteits.clouds.api.dto.park.param.InitSpecialCarAreaRequest; import com.zteits.clouds.api.dto.park.param.closecarpark.QueryAreaBlockRequest; import com.zteits.clouds.api.dto.sys.AreaTreeBindDTO; import com.zteits.clouds.api.dto.sys.AreaTreeDTO; import com.zteits.clouds.api.dto.sys.param.AreaListTreeDTO; import com.zteits.clouds.api.service.sys.TbAreaManageService; import com.zteits.sys.dao.TbAreaDao; import com.zteits.sys.dao.TbAreaManageDao; import com.zteits.sys.domain.TbArea; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @Service("com.zteits.sys.biz.TbAreaManageServiceImpl") public class TbAreaManageServiceImpl implements TbAreaManageService { private static final LogSelf log = LogSelfFactory.getLogSelf(TbAreaManageServiceImpl.class); @Autowired private TbAreaManageDao tbAreaManageDao; @Autowired private TbAreaDao tbAreaDao; @Override public BizResult> initAreaList(InitAreaRequest request) { List list = tbAreaManageDao.InitAreaList(request); List listTree = new ArrayList(); if(request.getId() == 0){ AreaListTreeDTO areaListTreeDTO = new AreaListTreeDTO(); areaListTreeDTO.setValue(100000L); areaListTreeDTO.setLabel("全国"); areaListTreeDTO.setId(0L); areaListTreeDTO.setParentId(-1L); areaListTreeDTO.setAreaType(30); // List childList = new ArrayList(); // AreaListTreeDTO dto = new AreaListTreeDTO(); // childList.add(areaListTreeDTO); diguiDto(areaListTreeDTO,list); listTree.add(areaListTreeDTO); }else if(request.getId() != 0 && request.getAreaType() == 30){ AreaListTreeDTO areaListTreeDTO = new AreaListTreeDTO(); List listProTree = new ArrayList(); areaListTreeDTO.setValue(100000L); areaListTreeDTO.setLabel("全国"); areaListTreeDTO.setId(0L); areaListTreeDTO.setParentId(-1L); areaListTreeDTO.setAreaType(30); for (int i = 0;i>(listTree); } @Override public BizResult> initSpecialCarAreaTree(InitSpecialCarAreaRequest request) { List areaTree = new ArrayList<>(); List areaTreeDTOList = new ArrayList<>(); if(request.getList().size() != 0){ //2.1 根据节点查询区域数据 // List areaIds = tbAreaDao.queryTbAreaByIdList(this.getAreaCodeFromBlockList(list)); ListCopyUtil.listCopyProperties(request.getList(),areaTreeDTOList,AreaTreeDTO.class); List areaList = tbAreaDao.queryAreaByIdsAndAreaType(this.getAreaCodeFromAreaDTOList(areaTreeDTOList), AreaTypeEnum.DISTRICT.code()); log.info("获取区县list.size()={}",!CollectionUtils.isEmpty(areaList) ?areaList.size():0); /**3.查询地市list.*/ List cityList = tbAreaDao.queryAreaByIdsAndAreaType(this.getAreaCodeFromAreaList(areaList), AreaTypeEnum.CITY.code()); log.info("获取地市list.size()={}",!CollectionUtils.isEmpty(cityList) ?cityList.size():0); /**4.查询省份list.*/ List provList = tbAreaDao.queryAreaByIdsAndAreaType(this.getAreaCodeFromAreaList(cityList), AreaTypeEnum.PROVINCE.code()); log.info("获取省份list.size()={}",!CollectionUtils.isEmpty(provList) ?provList.size():0); //添加省份 if(!CollectionUtils.isEmpty(provList)){ AreaTreeBindDTO areaDTO = new AreaTreeBindDTO(); areaDTO.setId(-1L); areaDTO.setAreaName("全国"); areaDTO.setLabel("全国"); areaDTO.setParentId(-1L); areaTree.add(areaDTO); for(TbArea area:provList){ AreaTreeBindDTO areaTreeDTO = new AreaTreeBindDTO(); if(area == null){ continue; } areaTreeDTO.setId(area.getId()); areaTreeDTO.setAreaName(area.getAreaName()); areaTreeDTO.setLabel(area.getAreaName()); areaTreeDTO.setParentId(-1L); areaTreeDTO.setAreaType(area.getAreaType()); areaTree.add(areaTreeDTO); } } //添加地市、区县 if(!CollectionUtils.isEmpty(cityList)){ cityList.addAll(areaList); for(TbArea area:cityList){ AreaTreeBindDTO areaTreeDTO = new AreaTreeBindDTO(); if(area == null){ continue; } areaTreeDTO.setId(area.getId()); areaTreeDTO.setAreaName(area.getAreaName()); areaTreeDTO.setLabel(area.getAreaName()); areaTreeDTO.setParentId(area.getParentId()); areaTreeDTO.setAreaType(area.getAreaType()); areaTree.add(areaTreeDTO); } } } return new BizResult>(areaTree); } @Override public BizResult> areaBlockByAreaId(QueryAreaBlockRequest request) { request.setAreaType(AreaTypeEnum.BLOCK.code()); List list = tbAreaManageDao.areaBlockByAreaId(request); return new BizResult>(list); } public void digui(List pros,List list) { List retList = new ArrayList(); for (AreaListTreeDTO p : pros) { for (AreaListTreeDTO l:list){ if(p.getId().equals(l.getParentId())){ retList.add(l); } } if (retList.size() > 0) { p.setChildren(retList); digui(retList,list); //循环调用自己 } } } public AreaListTreeDTO diguiDto(AreaListTreeDTO pros,List list) { List retList = new ArrayList(); if(pros != null){ for (AreaListTreeDTO l:list){ if(pros.getId().equals(l.getParentId())){ AreaListTreeDTO dto = new AreaListTreeDTO(); BeanUtils.copyProperties(l, dto); diguiDto(dto,list); retList.add(dto); } } } pros.setChildren(retList); return pros; } /** * 获取块中的区县list.
* @param areaBlockList * @return * 2017年12月27日 wangfs.
*/ private List getAreaCodeFromBlockList(List areaBlockList){ Set set = new HashSet<>(); if(!CollectionUtils.isEmpty(areaBlockList)){ for(InitSpecialCarDTO areaBlock:areaBlockList){ if(areaBlock == null){ continue; } set.add(areaBlock.getParentId()); } } return new ArrayList(set); } /** * 查询区域父类ids.
* @param * @return * 2017年12月27日 wangfs.
*/ private List getAreaCodeFromAreaDTOList(List areaList){ Set set = new HashSet<>(); if(!CollectionUtils.isEmpty(areaList)){ for(AreaTreeDTO area:areaList){ if(area == null){ continue; } set.add(area.getParentId()); } } return new ArrayList(set); } /** * 查询区域父类ids.
* @param * @return * 2017年12月27日 wangfs.
*/ private List getAreaCodeFromAreaList(List areaList){ Set set = new HashSet<>(); if(!CollectionUtils.isEmpty(areaList)){ for(TbArea area:areaList){ if(area == null){ continue; } set.add(area.getParentId()); } } return new ArrayList(set); } }