public List<City> selectAsso(Long deptId) {
Integer level1=0;
Integer level2=0;
Integer level3=0;
Integer level4=0;
// 根据父级id查子级
List<City> parentCity = cityMapper.getCityByParentId(deptId);
if (parentCity != null && parentCity.size() > 0) {
for (City city: parentCity) {
if(city.getLevel().intValue()==1){
level1=level1+1;
}else if(city.getLevel().intValue()==2){
level2=level2+1;
}else if(city.getLevel().intValue()==3){
level3=level3+1;
}else if(city.getLevel().intValue()==4){
level4=level4+1;
}
List<City> cities = selectAsso(city.getId());
city.setChild(cities);
city.setChildCount(cities.size());
}
return parentCity;
}
return parentCity;
}
这是个递归方法,如果是这样的话,当递归时会再次调用该方法拿到的变量不是加过后的值,而是0,只有不是递归的时候才能拿到加后的值,所以把这四个变量提升到类变量,就可以拿到加后的值,但是类变量当你再次调用时是拿到的上次加后的值
修改代码后:
package com.htyd.service.wind.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.htyd.model.wind.City;
import com.htyd.model.wind.CityBase;
import com.htyd.model.wind.PowerResource;
import com.htyd.service.wind.mapper.CityMapper;
import com.htyd.service.wind.mapper.PowerResourceMapper;
import com.htyd.service.wind.service.CityManagementService;
import io.swagger.models.auth.In;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class CityManagementServiceImpl implements CityManagementService {
//统计省总数、市总数、区总数、镇总数
Integer level1=0;
Integer level2=0;
Integer level3=0;
Integer level4=0;
@Resource
private CityMapper cityMapper;
@Resource
private PowerResourceMapper powerResourceMapper;
@Override
public CityBase getAllCity(Long cityId) {
//清0
level1=0;
level2=0;
level3=0;
level4=0;
List<City> parentCity = selectAsso(cityId);
return new CityBase(level1,level2,level3,level4,parentCity);
}
public List<City> selectAsso(Long deptId) {
// 根据父级id查子级
List<City> parentCity = cityMapper.getCityByParentId(deptId);
if (parentCity != null && parentCity.size() > 0) {
for (City city: parentCity) {
if(city.getLevel().intValue()==1){
level1=level1+1;
}else if(city.getLevel().intValue()==2){
level2=level2+1;
}else if(city.getLevel().intValue()==3){
level3=level3+1;
}else if(city.getLevel().intValue()==4){
level4=level4+1;
}
List<City> cities = selectAsso(city.getId());
city.setChild(cities);
city.setChildCount(cities.size());
}
return parentCity;
}
return parentCity;
}
@Override
public PageInfo<PowerResource> getAllResource(Long cityId,Integer pageNum,Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<PowerResource> aLlResource = powerResourceMapper.getALlResource(cityId);
return new PageInfo<PowerResource>(aLlResource);
}
}