关于变量问题

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值