huanghongfa
2021-04-26 a8ba074e4b0807cee707614a55e31e34ea0fbbde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.panzhihua.service_community.service.impl;
 
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.common.model.vos.community.ComMngAreaVO;
import com.panzhihua.common.model.vos.community.ComMngCityVO;
import com.panzhihua.common.model.vos.community.ComMngDistrictVO;
import com.panzhihua.common.model.vos.community.ComMngProvinceVO;
import com.panzhihua.service_community.dao.ComMngCityDAO;
import com.panzhihua.service_community.dao.ComMngDistrictDAO;
import com.panzhihua.service_community.dao.ComMngProvinceDAO;
import com.panzhihua.service_community.dao.ComMngStructAreaDAO;
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.model.dos.ComMngStructAreaDO;
import com.panzhihua.service_community.service.ComMngProvinceService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
@Service
public class ComMngProvinceServiceImpl implements ComMngProvinceService {
 
    @Resource
    private ComMngProvinceDAO comMngProvinceDAO;
 
    @Resource
    private ComMngCityDAO comMngCityDAO;
 
    @Resource
    private ComMngDistrictDAO comMngDistrictDAO;
 
    @Resource
    private ComMngStructAreaDAO comMngStructAreaDAO;
 
    @Override
    public R getProvince() {
        List<ComMngProvinceDO> provinceDOS = comMngProvinceDAO.selectList(new LambdaQueryWrapper<>());
        List<ComMngProvinceVO> 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<ComMngCityDO> comMngCityDOS = comMngCityDAO.selectList(new QueryWrapper<ComMngCityDO>().lambda().eq(ComMngCityDO::getProvinceAdcode, provinceAdcode));
        List<ComMngCityVO> 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<ComMngDistrictDO> comMngDistrictDOS = comMngDistrictDAO.selectList(new QueryWrapper<ComMngDistrictDO>().lambda().eq(ComMngDistrictDO::getCityAdcode, cityAdcode));
        List<ComMngDistrictVO> 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) {
        List<ComMngProvinceDO> provinceDOS = comMngProvinceDAO.selectList(new QueryWrapper<ComMngProvinceDO>().lambda().eq(ComMngProvinceDO::getProvinceAdcode, provinceAdcode));
        List<ComMngCityDO> cityDOS = comMngCityDAO.selectList(new QueryWrapper<>());
        List<ComMngDistrictDO> districtDOS = comMngDistrictDAO.selectList(new QueryWrapper<>());
        List<ComMngAreaVO> vos = new ArrayList<>();
        provinceDOS.forEach(p -> {
            ComMngAreaVO pvo = new ComMngAreaVO(p.getProvinceAdcode(), p.getProvinceName());
            List<ComMngCityDO> 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<ComMngDistrictDO> 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);
    }
}