计算同比和环比增长率

摘要:
在今天的项目中,我们遇到了一个计算同期和上期的环比比率的问题。keyOne.get.contains){keyOne.get-add;}}}}//如果水平方向为空,则只选择一个字段,如果{//translate=“amount”;keyOne.put;keyOne.get.add;System.out.println;}否则{if{//垂直和水平交换Strings=translate;translate=munehisa;munehisa=s;}模型addAttribute;}模型addAttribute;DoublecurrentsAmounts=空;DoubleLastsAmounts=空;for{if{ArrayList<Map<String,Object>>tmpList=newArrayList>Map<String、Object>>();Map<String,Object>twelveMap=newHashMap<String;Object>()elsetwelveMap。put;}}对于{Map<String,Object>Map=newHashMap<String、Object>();DoublecurrentAmount;Map.put;如果{currentAmount=0.0;}否则{currentAmount=Double.parseDouble;}地图put;//如果(el.getIdenticalCompare()!

      今天做的项目中,遇到一个计算同期环比和上期环比的计算并显示出来。这是用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";
    }

免责声明:文章转载自《计算同比和环比增长率》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇启动tomcat时报内存溢出,Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"解决faplayer在android4.1上只有图像没有声音的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java socket 实现多个一对一聊天

此程序能够实现同一网络下多个一对一聊天,必须服务器先启动 ,然后客户端启动并且服务器ip要填正确,并且每个客户端的自身编号必须唯一。 服务器端: packagecn.com.test09; importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.IOExce...

MongoDB查询报错:class com.mongodb.MongoSecurityException: Exception authenticating MongoCredential

异常日志: 2019-05-30 10:10:24,252 [http-nio-8080-exec-1] DEBUG [java.sql.Connection] -ooo Connection Opened 2019-05-30 10:10:24,258 [http-nio-8080-exec-1] DEBUG [java.sql.PreparedSta...

iOS--Block的那些事

假设我们熟悉代理递值的话,对代理我们可能又爱有恨!我们先建立模型A页面 push B页面,如果把A页面的值传递到B页面,属性和单例传值可以搞定!但是如果Pop过程中把B页面的值传递到A页面,那就可以用单例或者代理了!说到代理,我们要先声明协议,创建代理,很是麻烦。常常我们传递一个数值需要在两个页面间写很多代码,这些代码改变页面的整体顺序,可读性也打了折扣。...

调用钉钉接口发送消息

1.首先登陆钉钉开发者后台 https://ding-doc.dingtalk.com/ 2.选择H5微应用,创建应用 4.创建好之后,查看所建好的应用信息 其中AgentId,AppKey,AppSecret很重要,调用时需要用到 5.直接上代码看效果 1 string appkey = "dingv0cab6brl1ax6exd"; 2...

System.IO 应用一

using System;using System.Collections.Generic;using System.Text;using System.Net;using System.IO; namespace TestWebClientClass{class Program{static void Main(string[] args){WebCli...

单文件文件上传到服务器(HTML5+js+Java)

上传单文件到服务器 应公司要求,在HTML5页面上实现上传文件到服务器,对于一个还没毕业的实习生菜鸟来说,这可不得了-----不会,网上各种百度,找各种博客还是没解决,最后还是请教了公司的大神,人家给卸了一个例子,然后根据人家写的终于把这个上传文件搞定。 好了,开始上代码。 HTML5代码: <form name="upform"action="...