跳转到主要内容

账目-结算记录-每日费用趋势

账目-结算记录页面下的“图表”这一页签的“每日费用趋势”,当前的数据是按照月汇总的,后台数据查询的时候,是查出日期区间每天的数据的,再进行按照月汇总的。请帮我把日期区间每天的数据,在图表下面新增一个类似“销售-趋势分析”页面的销量表格展示,表格的项目名称大致如:日期,当天汇率,当前选中的费用项。当前原有图表和新增的表格展示,需要加上对“站点币种“和“RMB”的切换显示。数据源里有“RMB”对应的值和本身站点币种的值。还有图表的“结算金额,FBA费,佣金”这三个选项,帮我做成动态的下拉选项,下拉选项的值来源于“报表”页签下的income项。请帮我在“图表”下的“每日费用趋势”内容下面新增这个表格和优化当前图表。根据以下代码进行:

public Map<String,Object> monthReport(Map<String,Object> param){
		String fromDate = param.get("fromDate").toString().replaceAll("/", "-");
		String endDate = param.get("endDate").toString().replaceAll("/", "-");
		param.put("fromDate", fromDate);
		param.put("endDate", endDate);
		List<Map<String,Object>> mapList= amzSettlementReportSummaryMonthMapper.monthReport(param);
		Map<String,Object> result=new HashMap<String,Object>();
		String currency=null;
		BigDecimal totals=new BigDecimal("0");
		BigDecimal total_other=new BigDecimal("0");
		BigDecimal totals_rmb=new BigDecimal("0");
		BigDecimal total_other_rmb=new BigDecimal("0");
		for(Map<String,Object> map:mapList){
			if(map==null){continue;}
			BigDecimal total=map.get("Total Income Expenses Tax")!=null?new BigDecimal(map.get("Total Income Expenses Tax").toString()):null;
			totals=totals.add(total);
			BigDecimal others=new BigDecimal("0");
			Date postdate=map.get("posted_date")!=null?GeneralUtil.getDate(map.get("posted_date")):null;
			currency=map.get("currency").toString();
			for(Map.Entry<String, Object> entry:map.entrySet()){
				if(entry.getKey().equals("currency")||entry.getKey().equals("posted_date")){continue;}
				if(entry.getValue() instanceof BigDecimal){
					BigDecimal value=new BigDecimal(entry.getValue().toString());
					BigDecimal rmb=exchangeRateHandlerService.changeCurrencyByLocal(postdate,currency,"CNY",value);
					if(result.get(entry.getKey())!=null){
						result.put(entry.getKey(),value.add(new BigDecimal(result.get(entry.getKey()).toString())));
                        result.put(entry.getKey()+"_rmb",rmb.add(new BigDecimal(result.get(entry.getKey()+"_rmb").toString())));
                    }else{
						result.put(entry.getKey(),value);
						result.put(entry.getKey()+"_rmb",rmb);
					}
					if(!entry.getKey().equals("Total Income Expenses Tax")){
						others=others.add(value);
					}
				}
			}
			//-----------------------------others----------------------------
            assert total != null;
            others=total.subtract(others);
			map.put("Others",others);
			BigDecimal others_rmb=exchangeRateHandlerService.changeCurrencyByLocal(postdate,currency,"CNY",others);
			map.put("Others_rmb",others_rmb);
			total_other=total_other.add(others);
			total_other_rmb=total_other_rmb.add(others_rmb);
		}
		result.put("Others",total_other);
		result.put("Others_rmb",total_other_rmb);
		BigDecimal transfer = amzSettlementReportSummaryMonthMapper.TransfersToBankAccount(param);
		result.put("Transfers to bank account",transfer);
		if(transfer!=null){
			BigDecimal rmb=exchangeRateHandlerService.changeCurrencyByLocal(GeneralUtil.getDatez(endDate),currency,"CNY",transfer);
			result.put("Transfers to bank account_rmb",rmb);
		}

		BigDecimal transferFail=amzSettlementReportSummaryMonthMapper.FailedTransfersToBankAccount(param);
		result.put("Failed transfers to bank account",transferFail);
		if(transferFail!=null){
			BigDecimal rmb=exchangeRateHandlerService.changeCurrencyByLocal(GeneralUtil.getDatez(endDate),currency,"CNY",transferFail);
			result.put("Transfers to bank account_rmb",rmb);
		}
		List<String> list = getTransactionTypes();
		for(String item:list){
			if(result.get(item)==null){
				result.put(item,new BigDecimal(0));
				result.put(item+"_rmb",new BigDecimal(0));
			}
		}
		BigDecimal total=new BigDecimal("0");
		for(Map.Entry<String, Object> item:result.entrySet()){
			if(!item.getKey().contains("_rmb")){continue;}
		    System.out.println(item.getKey()+" "+item.getValue());
		}
		return result;
	}