package com.panzhihua.service_community.service.impl; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import com.google.common.collect.Lists; import com.panzhihua.common.model.vos.community.*; import com.panzhihua.common.model.vos.community.switchs.CommunitySwitchAllAppletsVO; import com.panzhihua.common.model.vos.community.switchs.StreetAllAppletsVO; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.ComStreetDO; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.panzhihua.common.model.vos.R; import com.panzhihua.service_community.model.dos.ComMngCityDO; import com.panzhihua.service_community.model.dos.ComMngDistrictDO; import com.panzhihua.service_community.model.dos.ComMngProvinceDO; import com.panzhihua.service_community.service.ComMngProvinceService; @Service public class ComMngProvinceServiceImpl implements ComMngProvinceService { @Resource private ComMngProvinceDAO comMngProvinceDAO; @Resource private ComMngCityDAO comMngCityDAO; @Resource private ComMngDistrictDAO comMngDistrictDAO; @Resource private ComStreetDAO comStreetDAO; @Resource private ComActDAO comActDAO; @Override public R getProvince() { List provinceDOS = comMngProvinceDAO.selectList(new LambdaQueryWrapper<>()); List vos = new ArrayList<>(); provinceDOS.forEach(p -> { ComMngProvinceVO vo = new ComMngProvinceVO(); BeanUtils.copyProperties(p, vo); vos.add(vo); }); return R.ok(vos); } @Override public R getCityByProvinceCode(Integer provinceAdcode) { List comMngCityDOS = comMngCityDAO .selectList(new QueryWrapper().lambda().eq(ComMngCityDO::getProvinceAdcode, provinceAdcode)); List vos = new ArrayList<>(); comMngCityDOS.forEach(c -> { ComMngCityVO vo = new ComMngCityVO(); BeanUtils.copyProperties(c, vo); vos.add(vo); }); return R.ok(vos); } @Override public R getDistrictByCityCode(Integer cityAdcode) { List comMngDistrictDOS = comMngDistrictDAO .selectList(new QueryWrapper().lambda().eq(ComMngDistrictDO::getCityAdcode, cityAdcode)); List vos = new ArrayList<>(); comMngDistrictDOS.forEach(c -> { ComMngDistrictVO vo = new ComMngDistrictVO(); BeanUtils.copyProperties(c, vo); vos.add(vo); }); return R.ok(vos); } @Override public R getCityTreeByProvinceCode(Integer provinceAdcode,String areaCode) { //省份 List provinceDOS = comMngProvinceDAO.selectList( new QueryWrapper().lambda().eq(ComMngProvinceDO::getProvinceAdcode, provinceAdcode)); //市 List cityDOS = comMngCityDAO.selectList(new QueryWrapper<>()); List districtDOS = comMngDistrictDAO.selectList(new QueryWrapper<>()); List vos = new ArrayList<>(); provinceDOS.forEach(p -> { ComMngAreaVO pvo = new ComMngAreaVO(p.getProvinceAdcode(), p.getProvinceName()); List citys = cityDOS.stream().filter( city -> city.getProvinceAdcode().equals(p.getProvinceAdcode()) && city.getCityAdcode().equals(510400)) .collect(Collectors.toList()); citys.forEach(c -> { ComMngAreaVO cityVo = new ComMngAreaVO(c.getCityAdcode(), c.getCityName()); BeanUtils.copyProperties(c, cityVo); pvo.getChildren().add(cityVo); List districts = districtDOS.stream().filter(district -> district.getCityAdcode().equals(c.getCityAdcode())) .collect(Collectors.toList()); districts.forEach(d -> { ComMngAreaVO districtVo = new ComMngAreaVO(d.getDistrictAdcode(), d.getDistrictName()); BeanUtils.copyProperties(d, districtVo); cityVo.getChildren().add(districtVo); }); }); vos.add(pvo); }); return R.ok(vos); } @Override public R getCityTreeByCode(Integer provinceAdcode, String areaCode,String appId) { //四川省 List provinceDOS = comMngProvinceDAO.selectList( new QueryWrapper().lambda().eq(ComMngProvinceDO::getProvinceAdcode, provinceAdcode)); List cityDOS = comMngCityDAO.selectList(new QueryWrapper<>()); List districtDOS = comMngDistrictDAO.selectList(new QueryWrapper<>()); List vos = new ArrayList<>(); provinceDOS.forEach(p -> { ComMngAreaVO pvo = new ComMngAreaVO(p.getProvinceAdcode(), p.getProvinceName()); List citys = cityDOS.stream().filter( city -> city.getProvinceAdcode().equals(p.getProvinceAdcode()) && city.getCityAdcode().equals(510400)) .collect(Collectors.toList()); citys.forEach(c -> { ComMngAreaVO cityVo = new ComMngAreaVO(c.getCityAdcode(), c.getCityName()); BeanUtils.copyProperties(c, cityVo); pvo.getChildren().add(cityVo); List districts = districtDOS.stream().filter(district -> district.getCityAdcode().equals(c.getCityAdcode())) .collect(Collectors.toList()); districts.forEach(d -> { ComMngAreaVO districtVo = new ComMngAreaVO(d.getDistrictAdcode(), d.getDistrictName()); BeanUtils.copyProperties(d, districtVo); cityVo.getChildren().add(districtVo); vos.add(districtVo); LambdaQueryWrapper param = new QueryWrapper().lambda(); ComStreetVO comStreetVO=new ComStreetVO(); comStreetVO.setAreaCode(d.getDistrictAdcode()); if (comStreetVO.getAreaCode() != null) { param.eq(ComStreetDO::getAreaCode, comStreetVO.getAreaCode()) .eq(ComStreetDO::getAppId, appId); } List comStreetDOS = comStreetDAO.selectList(param); comStreetDOS.forEach(dos -> { ComMngAreaVO csd = new ComMngAreaVO(0, dos.getName()); BeanUtils.copyProperties(dos, csd); districtVo.getChildren().add(csd); // 查询街道下社区列表 List communityList = comActDAO.getCommunityListByStreetId(dos.getStreetId()); communityList.forEach(commItem -> { ComMngAreaVO cssd = new ComMngAreaVO(0, commItem.getName(),commItem.getCommunityId()+""); BeanUtils.copyProperties(commItem, cssd); csd.getChildren().add(cssd); }); }); }); }); }); return R.ok(vos); } }