计算同比和环比增长率

今天做的项目中,遇到一个计算同期环比和上期环比的计算并显示出来。这是用ssm框架

代码示例:

@RequiresPermissions("analysis:analysis:smartSearch")
    @RequestMapping(value = "/analysis/analysis/smartSearch")
    public String smartSearch()
    {
        Page<ElectronicTax> page = new Page<ElectronicTax>(request, response);
        //page.setPageSize( 25 );
        
        if ( POST )
        {
            if ( !"".equals(request.getParameter("pageSize")) )
            {
                el.setPage(page);
            }
            Map<String, ArrayList<Map<String, Object>>> dataList = new HashMap<String, ArrayList<Map<String,Object>>>();
            Map<String, List<String>> keyOne = new HashMap<String, List<String>>();
            String transverse=null, munehisa=null;
            
            List<Map<String, Object>> list = companyService.getElectronicTaxDao().getSmartSearch(el);
            
            
            for( Map<String, Object> m : list )
            {
                if ( m != null )
                {
                    Iterator<Entry<String, Object>> itr = m.entrySet().iterator();
                    while( itr.hasNext() )
                    {
                        Entry<String, Object> ety = itr.next();
                        String key = ety.getKey();
                        String value = ety.getValue().toString();
                        
                        if ( "amount".equals(key) || ("accounting".equals(key) && el.getIsTime() == null )) continue;
                        
                        if ( keyOne.get(key) == null )
                        {
                            if ( munehisa == null )
                            {
                                munehisa = key;
                            }
                            else
                            {
                                transverse = key;
                            }
                            keyOne.put(key, new ArrayList<String>());
                        }
                        
                        if ( !keyOne.get(key).contains( value ) )
                        {
                            keyOne.get(key).add(value);
                        }
                    }
                }
            }
            //横向为空,则只选择了一个字段,那么横向TITLE为金额
            if ( transverse == null )
            {
                //transverse = "amount";
                keyOne.put(transverse, new ArrayList<String>());
                keyOne.get(transverse).add("金额");
                System.out.println(keyOne.get(transverse));
            }
            else
            {
                if ( keyOne.get(transverse).size() > keyOne.get(munehisa).size())
                {
           
    //纵横向互换
                    String s = transverse;
                    transverse = munehisa;
                    munehisa = s;
                }
                
                model.addAttribute("transverse_param", getParam(transverse));
            }
            
            model.addAttribute("munehisa_param", getParam(munehisa));
            Double currentsAmounts = null;
            Double LastsAmounts = null;
                    
            for( Map<String, Object> m : list )
            {
                if ( dataList.get( m.get(munehisa) ) == null )
                {
                    ArrayList<Map<String, Object>> tmpList = new ArrayList<Map<String, Object>>();
                    
                    Map<String, Object> twelveMap = new HashMap<String, Object>();
                    
                    for( Map<String, Object> mm : list )
                    {
                        if ( m.get(munehisa).equals( mm.get(munehisa) ) )
                        {
                            if ( transverse == null )
                            {
                                twelveMap.put("金额", mm.get("amount"));
                            }
                            else
                                twelveMap.put(mm.get(transverse).toString(), mm.get("amount"));
                        }
                    }
                    
                    for( String ym : keyOne.get(transverse) )
                    {
                        Map<String, Object> map = new HashMap<String, Object>();
                        
                        Double currentAmount;
                        map.put(transverse, ym);
                        if ( twelveMap.get(ym) == null )
                        {
                            currentAmount = 0.0;

                        }
                        else
                        {
                            currentAmount = Double.parseDouble( twelveMap.get(ym).toString() );
                        }
                        map.put("amount", currentAmount);
                        
                        //对比计算
                        if ( el.getIdenticalCompare() != null )
                        {
//                            System.out.println(m.get(transverse).toString());
//                            System.out.println(m.get(munehisa).toString());
//                            System.out.println(munehisa);
//                            Double amount = companyService.getLastYearCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa);
//                           double amount=20;
                           Double amount = 30d;
                           amount.toString();
                            map.put("identical", currentAmount - amount);
                            
                            if ( amount > 0  )
                            {    
                                map.put("identicals", (currentAmount - amount)/amount);
                            }
                            else map.put("identicals", 100);
                        }
                        if ( el.getRingCompare() != null )
                        {
                            Double amount = companyService.getLastMonthCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa);
                            if ( amount > 0  )
                            {    
                                map.put("ring", (currentAmount - amount)/amount);
                            }
                            else map.put("ring", 100);
                        }
                        
                        if ( el.getCumulativeCompare() != null )
                        {
                            Double currentAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, "current");
                            Double LastAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, "");
                            //所有行业同比增量
                            if ( currentsAmounts == null )
                            {
                                currentsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(),"", munehisa, "current");
                                LastsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), "", munehisa, "");
                            }
                            
                            map.put("cumulative", currentAmounts);
                            map.put("cumulatives", currentAmounts-LastAmounts);//增量
                            
                            if ( LastAmounts > 0 )
                            {
                                map.put("cumulativess", (currentAmounts-LastAmounts)/LastAmounts);//增速
                            }
                            else
                            {
                                map.put("cumulativess", 100);//增量
                            }
                            
                            if ( currentsAmounts > 0 || LastsAmounts > 0)
                            {
                                map.put("cumulativesss", (currentAmounts-LastAmounts)/(currentsAmounts-LastsAmounts));//增速
                            }
                            else
                            {
                                map.put("cumulativesss", 100);//增量
                            }
                        }
                        
                        tmpList.add( map );
                    }
                    
                    dataList.put(m.get(munehisa).toString(), tmpList);
                }
            }
            
            model.addAttribute("dataList", dataList);
            model.addAttribute("transverse", keyOne.get(transverse));
        }
        
        if ( !"".equals(request.getParameter("pageSize")) )
        {
            model.addAttribute("page", page);
        }
        model.addAttribute("yearMonthList", companyService.getYearMonth());
        
        return "addons/analysis/analysis/smartSearch";
    }
@RequiresPermissions("analysis:analysis:smartSearch") @RequestMapping(value = "/analysis/analysis/smartSearch") public String smartSearch() { Page page = new Page (request, response); //page.setPageSize( 25 ); if ( POST ) { if ( !"".equals(request.getParameter("pageSize")) ) { el.setPage(page); } Map >> dataList = new HashMap >>(); Map > keyOne = new HashMap >(); String transverse=null, munehisa=null; List > list = companyService.getElectronicTaxDao().getSmartSearch(el); for( Map m : list ) { if ( m != null ) { Iterator > itr = m.entrySet().iterator(); while( itr.hasNext() ) { Entry ety = itr.next(); String key = ety.getKey(); String value = ety.getValue().toString(); if ( "amount".equals(key) || ("accounting".equals(key) && el.getIsTime() == null )) continue; if ( keyOne.get(key) == null ) { if ( munehisa == null ) { munehisa = key; } else { transverse = key; } keyOne.put(key, new ArrayList ()); } if ( !keyOne.get(key).contains( value ) ) { keyOne.get(key).add(value); } } } } //横向为空,则只选择了一个字段,那么横向TITLE为金额 if ( transverse == null ) { //transverse = "amount"; keyOne.put(transverse, new ArrayList ()); keyOne.get(transverse).add("金额"); System.out.println(keyOne.get(transverse)); } else { if ( keyOne.get(transverse).size() > keyOne.get(munehisa).size()) { //纵横向互换 String s = transverse; transverse = munehisa; munehisa = s; } model.addAttribute("transverse_param", getParam(transverse)); } model.addAttribute("munehisa_param", getParam(munehisa)); Double currentsAmounts = null; Double LastsAmounts = null; for( Map m : list ) { if ( dataList.get( m.get(munehisa) ) == null ) { ArrayList > tmpList = new ArrayList >(); Map twelveMap = new HashMap (); for( Map mm : list ) { if ( m.get(munehisa).equals( mm.get(munehisa) ) ) { if ( transverse == null ) { twelveMap.put("金额", mm.get("amount")); } else twelveMap.put(mm.get(transverse).toString(), mm.get("amount")); } } for( String ym : keyOne.get(transverse) ) { Map map = new HashMap (); Double currentAmount; map.put(transverse, ym); if ( twelveMap.get(ym) == null ) { currentAmount = 0.0; } else { currentAmount = Double.parseDouble( twelveMap.get(ym).toString() ); } map.put("amount", currentAmount); //对比计算 if ( el.getIdenticalCompare() != null ) { // System.out.println(m.get(transverse).toString()); // System.out.println(m.get(munehisa).toString()); // System.out.println(munehisa); // Double amount = companyService.getLastYearCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa); // double amount=20; Double amount = 30d; amount.toString(); map.put("identical", currentAmount - amount); if ( amount > 0 ) { map.put("identicals", (currentAmount - amount)/amount); } else map.put("identicals", 100); } if ( el.getRingCompare() != null ) { Double amount = companyService.getLastMonthCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa); if ( amount > 0 ) { map.put("ring", (currentAmount - amount)/amount); } else map.put("ring", 100); } if ( el.getCumulativeCompare() != null ) { Double currentAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, "current"); Double LastAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, ""); //所有行业同比增量 if ( currentsAmounts == null ) { currentsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(),"", munehisa, "current"); LastsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), "", munehisa, ""); } map.put("cumulative", currentAmounts); map.put("cumulatives", currentAmounts-LastAmounts);//增量 if ( LastAmounts > 0 ) { map.put("cumulativess", (currentAmounts-LastAmounts)/LastAmounts);//增速 } else { map.put("cumulativess", 100);//增量 } if ( currentsAmounts > 0 || LastsAmounts > 0) { map.put("cumulativesss", (currentAmounts-LastAmounts)/(currentsAmounts-LastsAmounts));//增速 } else { map.put("cumulativesss", 100);//增量 } } tmpList.add( map ); } dataList.put(m.get(munehisa).toString(), tmpList); } } model.addAttribute("dataList", dataList); model.addAttribute("transverse", keyOne.get(transverse)); } if ( !"".equals(request.getParameter("pageSize")) ) { model.addAttribute("page", page); } model.addAttribute("yearMonthList", companyService.getYearMonth()); return "addons/analysis/analysis/smartSearch"; }
今天做的项目中,遇到一个计算同期环比和上期环比的计算并显示出来。这是用ssm框架 代码示例: @RequiresPermissions("analysis:analysis:smartSearch") @RequestMapping(value = "/analysis/analysis/smartSearch") public String smartSearch() { Page page = new Page (request, response); //page.setPageSize( 25 ); if ( POST ) { if ( !"".equals(request.getParameter("pageSize")) ) { el.setPage(page); } Map >> dataList = new HashMap >>(); Map > keyOne = new HashMap >(); String transverse=null, munehisa=null; List > list = companyService.getElectronicTaxDao().getSmartSearch(el); for( Map m : list ) { if ( m != null ) { Iterator > itr = m.entrySet().iterator(); while( itr.hasNext() ) { Entry ety = itr.next(); String key = ety.getKey(); String value = ety.getValue().toString(); if ( "amount".equals(key) || ("accounting".equals(key) && el.getIsTime() == null )) continue; if ( keyOne.get(key) == null ) { if ( munehisa == null ) { munehisa = key; } else { transverse = key; } keyOne.put(key, new ArrayList ()); } if ( !keyOne.get(key).contains( value ) ) { keyOne.get(key).add(value); } } } } //横向为空,则只选择了一个字段,那么横向TITLE为金额 if ( transverse == null ) { //transverse = "amount"; keyOne.put(transverse, new ArrayList ()); keyOne.get(transverse).add("金额"); System.out.println(keyOne.get(transverse)); } else { if ( keyOne.get(transverse).size() > keyOne.get(munehisa).size()) { //纵横向互换 String s = transverse; transverse = munehisa; munehisa = s; } model.addAttribute("transverse_param", getParam(transverse)); } model.addAttribute("munehisa_param", getParam(munehisa)); Double currentsAmounts = null; Double LastsAmounts = null; for( Map m : list ) { if ( dataList.get( m.get(munehisa) ) == null ) { ArrayList > tmpList = new ArrayList >(); Map twelveMap = new HashMap (); for( Map mm : list ) { if ( m.get(munehisa).equals( mm.get(munehisa) ) ) { if ( transverse == null ) { twelveMap.put("金额", mm.get("amount")); } else twelveMap.put(mm.get(transverse).toString(), mm.get("amount")); } } for( String ym : keyOne.get(transverse) ) { Map map = new HashMap (); Double currentAmount; map.put(transverse, ym); if ( twelveMap.get(ym) == null ) { currentAmount = 0.0; } else { currentAmount = Double.parseDouble( twelveMap.get(ym).toString() ); } map.put("amount", currentAmount); //对比计算 if ( el.getIdenticalCompare() != null ) { // System.out.println(m.get(transverse).toString()); // System.out.println(m.get(munehisa).toString()); // System.out.println(munehisa); // Double amount = companyService.getLastYearCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa); // double amount=20; Double amount = 30d; amount.toString(); map.put("identical", currentAmount - amount); if ( amount > 0 ) { map.put("identicals", (currentAmount - amount)/amount); } else map.put("identicals", 100); } if ( el.getRingCompare() != null ) { Double amount = companyService.getLastMonthCount(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa); if ( amount > 0 ) { map.put("ring", (currentAmount - amount)/amount); } else map.put("ring", 100); } if ( el.getCumulativeCompare() != null ) { Double currentAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, "current"); Double LastAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), m.get(munehisa).toString(), munehisa, ""); //所有行业同比增量 if ( currentsAmounts == null ) { currentsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(),"", munehisa, "current"); LastsAmounts = companyService.getCumulativeCompare(m.get(transverse).toString(), "", munehisa, ""); } map.put("cumulative", currentAmounts); map.put("cumulatives", currentAmounts-LastAmounts);//增量 if ( LastAmounts > 0 ) { map.put("cumulativess", (currentAmounts-LastAmounts)/LastAmounts);//增速 } else { map.put("cumulativess", 100);//增量 } if ( currentsAmounts > 0 || LastsAmounts > 0) { map.put("cumulativesss", (currentAmounts-LastAmounts)/(currentsAmounts-LastsAmounts));//增速 } else { map.put("cumulativesss", 100);//增量 } } tmpList.add( map ); } dataList.put(m.get(munehisa).toString(), tmpList); } } model.addAttribute("dataList", dataList); model.addAttribute("transverse", keyOne.get(transverse)); } if ( !"".equals(request.getParameter("pageSize")) ) { model.addAttribute("page", page); } model.addAttribute("yearMonthList", companyService.getYearMonth()); return "addons/analysis/analysis/smartSearch"; }
经验分享 程序员 微信小程序 职场和发展