账目-结算记录-每日费用趋势
账目-结算记录页面下的“图表”这一页签的“每日费用趋势”,当前的数据是按照月汇总的,后台数据查询的时候,是查出日期区间每天的数据的,再进行按照月汇总的。请帮我把日期区间每天的数据,在图表下面新增一个类似“销售-趋势分析”页面的销量表格展示,表格的项目名称大致如:日期,当天汇率,当前选中的费用项。当前原有图表和新增的表格展示,需要加上对“站点币种“和“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;
}