package com.ruoyi.management.service.impl;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.management.domain.SlRegion;
|
import com.ruoyi.management.domain.SlVolumeProductionRk;
|
import com.ruoyi.management.domain.dto.RegionQuery;
|
import com.ruoyi.management.domain.vo.RegionVo;
|
import com.ruoyi.management.mapper.SlRegionMapper;
|
import com.ruoyi.management.service.SlRegionService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 省市区三级联动 服务实现类
|
* </p>
|
*
|
* @author hjl
|
* @since 2024-06-25
|
*/
|
@Service
|
public class SlRegionServiceImpl extends ServiceImpl<SlRegionMapper, SlRegion> implements SlRegionService {
|
|
@Resource
|
private SlRegionMapper slRegionMapper;
|
@Override
|
public List<RegionVo> listRegionVo() {
|
List<RegionVo> regionVoList = slRegionMapper.listRegionVo();
|
List<RegionVo> regionVoList1 = new ArrayList<>();
|
List<RegionVo> regionVoList2 = new ArrayList<>();
|
List<RegionVo> regionVoList3 = new ArrayList<>();
|
List<RegionVo> regionVoList4 = new ArrayList<>();
|
// 将地区按照级别分别存放到不同的列表中
|
for (RegionVo regionVo : regionVoList) {
|
if (regionVo.getLevel() == 1) {
|
regionVoList1.add(regionVo);
|
}
|
if (regionVo.getLevel() == 2) {
|
regionVoList2.add(regionVo);
|
}
|
if (regionVo.getLevel() == 3) {
|
regionVoList3.add(regionVo);
|
}
|
if (regionVo.getLevel() == 4) {
|
regionVoList4.add(regionVo);
|
}
|
}
|
|
|
Iterator<RegionVo> regionVoIterator4;
|
RegionVo children;
|
// 将第二级地区挂到第一级地区下面
|
for (RegionVo regionVo : regionVoList3) {
|
if (null == regionVo.getChildren()) {
|
regionVo.setChildren(new ArrayList<>());
|
}
|
regionVoIterator4 = regionVoList4.iterator();
|
while (regionVoIterator4.hasNext()) {
|
children = regionVoIterator4.next();
|
if(children.getCode()!=null) {
|
if (regionVo.getCode().equals(children.getParentId().toString())) {
|
regionVo.getChildren().add(children);
|
regionVoIterator4.remove();
|
}
|
}
|
}
|
}
|
|
|
Iterator<RegionVo> regionVoIterator3;
|
|
// 将第三级地区挂到第二级地区下面
|
for (RegionVo regionVo : regionVoList2) {
|
if (null == regionVo.getChildren()) {
|
regionVo.setChildren(new ArrayList<>());
|
}
|
regionVoIterator3 = regionVoList3.iterator();
|
while (regionVoIterator3.hasNext()) {
|
children = regionVoIterator3.next();
|
if(children.getCode()!=null){
|
if (regionVo.getCode().equals(children.getParentId().toString())) {
|
regionVo.getChildren().add(children);
|
regionVoIterator3.remove();
|
}
|
}
|
}
|
}
|
Iterator<RegionVo> regionVoIterator2;
|
// 将第二级地区挂到第一级地区下面
|
for (RegionVo regionVo : regionVoList1) {
|
if (null == regionVo.getChildren()) {
|
regionVo.setChildren(new ArrayList<>());
|
}
|
regionVoIterator2 = regionVoList2.iterator();
|
while (regionVoIterator2.hasNext()) {
|
children = regionVoIterator2.next();
|
if (regionVo.getCode()!=null){
|
if (regionVo.getCode().equals(children.getParentId().toString())) {
|
regionVo.getChildren().add(children);
|
regionVoIterator2.remove();
|
}
|
}
|
|
}
|
}
|
// 返回处理后的地区列表
|
return regionVoList1;
|
}
|
|
@Override
|
public List<SlRegion> getcityRegione(RegionQuery regionQuery) {
|
|
LambdaQueryWrapper<SlRegion> wrapper1= Wrappers.lambdaQuery();
|
if (regionQuery.getCode()!=null){
|
wrapper1.eq(SlRegion::getParentId,regionQuery.getCode());
|
}
|
wrapper1.eq(SlRegion::getLevel,2);
|
List<SlRegion> page2 = this.list(wrapper1);
|
return page2;
|
}
|
|
@Override
|
public List<SlRegion> getcountyRegione(RegionQuery regionQuery) {
|
LambdaQueryWrapper<SlRegion> wrapper1= Wrappers.lambdaQuery();
|
if (regionQuery.getCode()!=null){
|
wrapper1.eq(SlRegion::getParentId,regionQuery.getCode());
|
}
|
wrapper1.eq(SlRegion::getLevel,3);
|
List<SlRegion> page2 = this.list(wrapper1);
|
return page2;
|
}
|
|
@Override
|
public List<SlRegion> gettownRegione(RegionQuery regionQuery) {
|
LambdaQueryWrapper<SlRegion> wrapper1= Wrappers.lambdaQuery();
|
if (regionQuery.getCode()!=null){
|
wrapper1.eq(SlRegion::getParentId,regionQuery.getCode());
|
}
|
wrapper1.eq(SlRegion::getLevel,4);
|
List<SlRegion> page2 = this.list(wrapper1);
|
return page2;
|
}
|
}
|