internship:代码优化——减少大部分的if else

代码优化始于界面新功能的增设,也就是在原有的下拉框增加几个选项,来切换显示页面。
一开始是以有多少个新增显示页面就创建多少个枚举类,这样就造成了代码冗长 if else很多,为此使用一个枚举类来为多个新增页面使用。以此不管有多少个都可以应对。

public Map<String, Integer> peopleStat(Integer tunnelId) {

        Map<String,Integer> map = new LinkedHashMap<>(8);
        //按隧道类型区分模块
        BizTunnel tunnel = tunnelMapper.selectById(tunnelId);
            //redis内取对应key值
        Set<String> keys1 = redisUtil.keys(RedisKeyCategory.CURRENT.getKey() + RedisKeys.personLocation.getKey() + tunnelId);
            int TotalPDX = 0,TotalPDD=0;
            int dongk=0,erc=0,zhangzm=0;//用于计数
            //每种隧道的两种类型设初值
            for (Normally normal : Normally.values()) {
                for (Position position : Position.values()) {
                    map.put(normal.getKey() + "_" + position.getKey(), 0);
                }
            }

        for (Normally normal: Normally.values()) {
            for (String key : keys1) {
                //获取缓存值
                PersonLocationData data = (PersonLocationData) redisUtil.get(key);
                String k = normal.getKey() + "_" + data.getPosition();//与上面的map键对应

                if (ToolUtil.isNotEmpty(data)) {
                    if (data.getDuan().equals(normal.getKey())) {
                        TotalPDX++;
                    } else {
                        TotalPDD++;
                    }
                    if(data.getPosition().equals(Position.DONGK.getKey()))
                    {
                        map.put(k,dongk++);
                    }
                    else if(data.getPosition().equals(Position.ERC.getKey())){
                        map.put(k,erc++);
                    }
                    else
                        map.put(k,zhangzm++);
                }
            }
        }

            if(tunnel.getName().equals("隧道主洞")||tunnel.getName().equals("隧道...")){
                //类型一总数
                map.put("enter_total", TotalPDX);
                //类型二总数
                map.put("exit_total", TotalPDD);
            }
            else
            map.put("Total_people",TotalPDD+TotalPDX);

           return map;
    }

 public Map<String, Object> peopleStatGraph(Integer tunnelId) {
        Map<String, Integer> statMap = peopleStat(tunnelId);
        BizTunnel tunnel=tunnelMapper.selectById(tunnelId);
        Map<String, Object> res = new LinkedHashMap<>(3);
        //横坐标 两端各三个区域
        List<String> xAxis = new ArrayList();
        //纵坐标 六个区域的人数 分两种类型
        List<Integer> values = new ArrayList<>();


        for (Normally normal: Normally.values()) {
            for (Position position : Position.values()) {
                //添加横坐标
                xAxis.add(tunnel.getName()+normal.getValue()+ position.getValue());
                //添加纵坐标
                Integer count = statMap.get(normal.getKey() + "_" + position.getKey());
                values.add(count == null ? 0 : count);
            }
        }

        
        res.put("alarm", 0);
        res.put("xAxis", xAxis);
        res.put("values", values);
        return res;
    }

}

以上是利用map键值对分类进行计数 能更好的配合前端进行坐标图的绘画。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值