java 环比_计算同比和环比增长率

该博客介绍了如何使用Java来计算同比增长率和环比增长率。通过遍历数据,获取关键字段,然后根据指定条件对比计算,实现了从数据库获取数据并进行差异分析,包括相同比较、环比比较和累计比较,最后将计算结果存储并展示。
摘要由CSDN通过智能技术生成

@RequiresPermissions("analysis:analysis:smartSearch")

@RequestMapping(value= "/analysis/analysis/smartSearch")publicString 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( Mapm : 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( Mapm : list )

{if ( dataList.get( m.get(munehisa) ) == null)

{

ArrayList> tmpList = new ArrayList>();

Map twelveMap = new HashMap();for( Mapmm : list )

{if( m.get(munehisa).equals( mm.get(munehisa) ) )

{if ( transverse == null)

{

twelveMap.put("金额", mm.get("amount"));

}elsetwelveMap.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";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值