理财报表位数改动、千元去除
This commit is contained in:
parent
a8479c0e56
commit
df0dc5116c
|
|
@ -45,19 +45,17 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
public void beforeQuery(ReportQueryParam queryParam) {
|
public void beforeQuery(ReportQueryParam queryParam) {
|
||||||
super.beforeQuery(queryParam);
|
super.beforeQuery(queryParam);
|
||||||
ReportList reportList = getControl("reportlistap");
|
ReportList reportList = getControl("reportlistap");
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[0], "预计收益(千元)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[0], "预计收益", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[1], "计提日", ReportColumn.TYPE_DATE }));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[1], "计提日", ReportColumn.TYPE_DATE }));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[2], "天数", ReportColumn.TYPE_BIGINT }));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[2], "天数", ReportColumn.TYPE_BIGINT }));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[3], "收益计提(千元)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[3], "收益计提", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[4], "本月收益(千元)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[4], "本月收益", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[5], "当月年化收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[5], "当月年化收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[6], "本年累计收益(千元)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[6], "本年累计收益", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[7], "本年累计年化收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[7], "本年累计年化收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[8], "实际收益", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[8], "实际收益", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[9], "实际总收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[9], "实际总收益率(%)", ReportColumn.TYPE_DECIMAL , String.valueOf(2)}));
|
||||||
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[10], "是否已到期", ReportColumn.TYPE_TEXT }));
|
reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[10], "是否已到期", ReportColumn.TYPE_TEXT }));
|
||||||
//reportList.getColumns().add(ReportUtils.createReportColumn(new String [] { DYNAMICS_FIELDS[11], "金额(千元)", ReportColumn.TYPE_DECIMAL , String.valueOf(8)}));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -78,13 +76,14 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
BigDecimal sumYearEarnings =BigDecimal.ZERO;//本年收益汇总
|
BigDecimal sumYearEarnings =BigDecimal.ZERO;//本年收益汇总
|
||||||
BigDecimal sumActualEarnings =BigDecimal.ZERO;//实际收益汇总
|
BigDecimal sumActualEarnings =BigDecimal.ZERO;//实际收益汇总
|
||||||
|
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
DynamicObject row = iterator.next();
|
DynamicObject row = iterator.next();
|
||||||
//1.金额(千元)设置
|
//1.金额设置
|
||||||
BigDecimal amount = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[4]); // 原始金额(元)
|
BigDecimal amount = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[4]); // 原始金额(元)
|
||||||
BigDecimal buyAmount = amount.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);//购买金额(千元)
|
row.set(REPORT_FIELDS[4],amount.setScale(2, RoundingMode.HALF_UP));
|
||||||
row.set(REPORT_FIELDS[4],buyAmount);
|
|
||||||
|
BigDecimal newAmount = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[17]); // 金额(元)
|
||||||
|
row.set(REPORT_FIELDS[17],newAmount.setScale(2, RoundingMode.HALF_UP));
|
||||||
|
|
||||||
BigDecimal netWorth = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[6]); // 购买时单位净值
|
BigDecimal netWorth = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[6]); // 购买时单位净值
|
||||||
Date buyDate = row.getDate(REPORT_FIELDS[7]); // 购买日
|
Date buyDate = row.getDate(REPORT_FIELDS[7]); // 购买日
|
||||||
|
|
@ -110,7 +109,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
// 5.计息基准天数
|
// 5.计息基准天数
|
||||||
BigDecimal basisDays = computeBasisDays(basis);
|
BigDecimal basisDays = computeBasisDays(basis);
|
||||||
|
|
||||||
// 6. 预计收益 = 产品期限 * 金额(千元) * 预计业绩比较基准 / 365
|
// 6. 预计收益 = 产品期限 * 金额 * 预计业绩比较基准 / 365
|
||||||
BigDecimal proRevenue = countProRevenue(expectedRate, term, amount, row,basisDays);
|
BigDecimal proRevenue = countProRevenue(expectedRate, term, amount, row,basisDays);
|
||||||
sumProjectedEarnings=sumProjectedEarnings.add(proRevenue);
|
sumProjectedEarnings=sumProjectedEarnings.add(proRevenue);
|
||||||
|
|
||||||
|
|
@ -118,10 +117,10 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
// 7. 持有份额 = 计提日期向上最近持有份额
|
// 7. 持有份额 = 计提日期向上最近持有份额
|
||||||
// 8. 月末单位净值 = 计提日期向上最近一次的净值
|
// 8. 月末单位净值 = 计提日期向上最近一次的净值
|
||||||
// 9. 月末净值报告日 = 计提日期向上最近一次的估值日期
|
// 9. 月末净值报告日 = 计提日期向上最近一次的估值日期
|
||||||
// 10. 本月收益(千元)、当月年化收益率%
|
// 10. 本月收益、当月年化收益率%
|
||||||
// 11. 本年累计收益(千元)、本年累计年化收益率
|
// 11. 本年累计收益、本年累计年化收益率
|
||||||
Long id = row.getLong(REPORT_FIELDS[13]);
|
Long id = row.getLong(REPORT_FIELDS[13]);
|
||||||
BigDecimal allRedProductAmount = valuationEntry(accrualDate, buyDate, expireDate2, valueDate, buyAmount, days, basisDays, id, row,netWorth,startBuyCopies);
|
BigDecimal allRedProductAmount = valuationEntry(accrualDate, buyDate, expireDate2, valueDate, amount, days, basisDays, id, row,netWorth,startBuyCopies);
|
||||||
|
|
||||||
BigDecimal buyCopies = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[5]); // 持有份额
|
BigDecimal buyCopies = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[5]); // 持有份额
|
||||||
BigDecimal monthNetWorth = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[11]); // 月末单位净值
|
BigDecimal monthNetWorth = ReportUtils.getBigDecimalValue(row, REPORT_FIELDS[11]); // 月末单位净值
|
||||||
|
|
@ -142,27 +141,14 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
//实际总收益率=实际收益/金额
|
//实际总收益率=实际收益/金额
|
||||||
BigDecimal actualEarnings = ReportUtils.getBigDecimalValue(row, DYNAMICS_FIELDS[8]);
|
BigDecimal actualEarnings = ReportUtils.getBigDecimalValue(row, DYNAMICS_FIELDS[8]);
|
||||||
row.set(DYNAMICS_FIELDS[9],actualEarnings
|
row.set(DYNAMICS_FIELDS[9],actualEarnings
|
||||||
.divide(buyAmount,4, RoundingMode.HALF_UP)
|
.divide(amount,4, RoundingMode.HALF_UP)
|
||||||
.multiply(BigDecimal.valueOf(100)));
|
.multiply(BigDecimal.valueOf(100)));
|
||||||
sumActualEarnings=sumActualEarnings.add(actualEarnings);
|
sumActualEarnings=sumActualEarnings.add(actualEarnings);
|
||||||
|
|
||||||
//小计行合计
|
|
||||||
// if (row.getString(REPORT_FIELDS[0]).contains("-小计")){
|
|
||||||
// row.set(DYNAMICS_FIELDS[0],sumProjectedEarnings);
|
|
||||||
// row.set(DYNAMICS_FIELDS[3],sumProvisionEarnings);
|
|
||||||
// row.set(DYNAMICS_FIELDS[4],sumMonthEarnings);
|
|
||||||
// row.set(DYNAMICS_FIELDS[6],sumYearEarnings);
|
|
||||||
// //赋值后归0,重新参与合计
|
|
||||||
// sumProjectedEarnings=BigDecimal.ZERO;
|
|
||||||
// sumProvisionEarnings=BigDecimal.ZERO;
|
|
||||||
// sumMonthEarnings=BigDecimal.ZERO;
|
|
||||||
// sumYearEarnings=BigDecimal.ZERO;
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//小计行处理
|
|
||||||
//ReportUtils.changeRowData(rowData,REPORT_FIELDS[0]);
|
|
||||||
//过滤
|
//过滤
|
||||||
ReportUtils.removeRowData(rowData,REPORT_FIELDS[9],DYNAMICS_FIELDS[1]);
|
ReportUtils.removeRowData(rowData,REPORT_FIELDS[9],DYNAMICS_FIELDS[1]);
|
||||||
//排序
|
//排序
|
||||||
|
|
@ -179,11 +165,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
sumConfig.add(new String[]{DYNAMICS_FIELDS[6], DYNAMICS_FIELDS[6]}); // shjh_yearrevenueamt
|
sumConfig.add(new String[]{DYNAMICS_FIELDS[6], DYNAMICS_FIELDS[6]}); // shjh_yearrevenueamt
|
||||||
sumConfig.add(new String[]{DYNAMICS_FIELDS[8], DYNAMICS_FIELDS[8]}); // shjh_actualearnings
|
sumConfig.add(new String[]{DYNAMICS_FIELDS[8], DYNAMICS_FIELDS[8]}); // shjh_actualearnings
|
||||||
sumConfig.add(new String[]{REPORT_FIELDS[17], REPORT_FIELDS[17]}); // shjh_actualearnings
|
sumConfig.add(new String[]{REPORT_FIELDS[17], REPORT_FIELDS[17]}); // shjh_actualearnings
|
||||||
|
|
||||||
ReportUtils.addTotalRowData(rowData,REPORT_FIELDS[0],"小计","合计",sumConfig);
|
ReportUtils.addTotalRowData(rowData,REPORT_FIELDS[0],"小计","合计",sumConfig);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -342,10 +324,10 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
|
|
||||||
//计提日最近估值记录获取——(赎回金额+实际收益)* 所有赎回单
|
//计提日最近估值记录获取——(赎回金额+实际收益)* 所有赎回单
|
||||||
allRedAmount=this.getRealRevenueAmount(dynamicObjectCollection,closestRecord.getDate("e_valuationdate"));
|
allRedAmount=this.getRealRevenueAmount(dynamicObjectCollection,closestRecord.getDate("e_valuationdate"));
|
||||||
row.set(DYNAMICS_FIELDS[8], allRedAmount.divide(BigDecimal.valueOf(1000),8, RoundingMode.HALF_UP)); // 实际收益
|
row.set(DYNAMICS_FIELDS[8], allRedAmount); // 实际收益
|
||||||
//计提日最近估值记录获取——(1-赎回份额/赎回日剩余份额)* 所有赎回单
|
//计提日最近估值记录获取——(1-赎回份额/赎回日剩余份额)* 所有赎回单
|
||||||
allRedProductAmount=this.getRedProductAmount(dynamicObjectCollection,closestRecord.getDate("e_valuationdate"));
|
allRedProductAmount=this.getRedProductAmount(dynamicObjectCollection,closestRecord.getDate("e_valuationdate"));
|
||||||
//计算金额(千元)
|
//计算金额
|
||||||
row.set(REPORT_FIELDS[17],allRedProductAmount.multiply(buyAmount).setScale(8, RoundingMode.HALF_UP));
|
row.set(REPORT_FIELDS[17],allRedProductAmount.multiply(buyAmount).setScale(8, RoundingMode.HALF_UP));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -386,8 +368,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
BigDecimal lastMonthMarketValue = lastMonthRecord.getBigDecimal("e_iopv")
|
BigDecimal lastMonthMarketValue = lastMonthRecord.getBigDecimal("e_iopv")
|
||||||
.multiply(lastMonthRecord.getBigDecimal("e_surpcopies")).add(lastMonthRedAmount);
|
.multiply(lastMonthRecord.getBigDecimal("e_surpcopies")).add(lastMonthRedAmount);
|
||||||
|
|
||||||
monthAmount = currentMarketValue.subtract(lastMonthMarketValue)
|
monthAmount = currentMarketValue.subtract(lastMonthMarketValue);
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
|
|
||||||
// 计算当月年化收益率
|
// 计算当月年化收益率
|
||||||
// 本月收益/(购买金额*(赎回比之积))*100*12
|
// 本月收益/(购买金额*(赎回比之积))*100*12
|
||||||
|
|
@ -401,8 +382,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
} else if (accrualYear == buyYear && accrualMonth == buyMonth) {
|
} else if (accrualYear == buyYear && accrualMonth == buyMonth) {
|
||||||
// 特殊处理:计提月与购买月相同时,使用购买金额作为上月市值
|
// 特殊处理:计提月与购买月相同时,使用购买金额作为上月市值
|
||||||
// ②如果计提日期和购买日同月,"上月最后一次的市值行"取购买金额
|
// ②如果计提日期和购买日同月,"上月最后一次的市值行"取购买金额
|
||||||
monthAmount = currentMarketValue.subtract(buyAmount.multiply(new BigDecimal(1000)))
|
monthAmount = currentMarketValue.subtract(buyAmount);
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
|
|
||||||
if (buyAmount.compareTo(BigDecimal.ZERO) != 0) {
|
if (buyAmount.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
//本月收益/购买金额*100*12
|
//本月收益/购买金额*100*12
|
||||||
|
|
@ -428,8 +408,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
BigDecimal lastYearMarketValue = lastYearRecord.getBigDecimal("e_iopv")
|
BigDecimal lastYearMarketValue = lastYearRecord.getBigDecimal("e_iopv")
|
||||||
.multiply(lastYearRecord.getBigDecimal("e_surpcopies")).add(lastYearRedAmount);
|
.multiply(lastYearRecord.getBigDecimal("e_surpcopies")).add(lastYearRedAmount);
|
||||||
|
|
||||||
yearAmount = currentMarketValue.subtract(lastYearMarketValue)
|
yearAmount = currentMarketValue.subtract(lastYearMarketValue);
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
|
|
||||||
//本年累计年化收益率=(本年累计总收益额/(金额*(赎回比之积)))/(计提日期到-年初日期)*计息基准天数
|
//本年累计年化收益率=(本年累计总收益额/(金额*(赎回比之积)))/(计提日期到-年初日期)*计息基准天数
|
||||||
if (buyAmount.compareTo(BigDecimal.ZERO) != 0 && BigDecimal.valueOf(daysFromJan1).compareTo(BigDecimal.ZERO) != 0 ) {
|
if (buyAmount.compareTo(BigDecimal.ZERO) != 0 && BigDecimal.valueOf(daysFromJan1).compareTo(BigDecimal.ZERO) != 0 ) {
|
||||||
|
|
@ -445,8 +424,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
// 天数:(计提日期到-计息日)
|
// 天数:(计提日期到-计息日)
|
||||||
|
|
||||||
if (buyAmount.compareTo(BigDecimal.ZERO) != 0 ) {
|
if (buyAmount.compareTo(BigDecimal.ZERO) != 0 ) {
|
||||||
yearAmount = currentMarketValue.subtract(buyAmount.multiply(new BigDecimal(1000)))
|
yearAmount = currentMarketValue.subtract(buyAmount);
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
|
|
||||||
if (days.compareTo(BigDecimal.ZERO) !=0 ){
|
if (days.compareTo(BigDecimal.ZERO) !=0 ){
|
||||||
yearAnnualizedRate = yearAmount
|
yearAnnualizedRate = yearAmount
|
||||||
|
|
@ -462,8 +440,6 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算实际收益
|
|
||||||
//countActRevenueAmt(buyCopies, monthIop, netWorth, row,startBuyCopies,allRedAmount);
|
|
||||||
// 设置结果
|
// 设置结果
|
||||||
row.set(REPORT_FIELDS[5], buyCopies);
|
row.set(REPORT_FIELDS[5], buyCopies);
|
||||||
row.set(REPORT_FIELDS[11], monthIop);
|
row.set(REPORT_FIELDS[11], monthIop);
|
||||||
|
|
@ -712,19 +688,10 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
String day = "0"; // 默认值设为0
|
String day = "0"; // 默认值设为0
|
||||||
Date endDate = (expireDate != null) ? expireDate : accrualDate;
|
Date endDate = (expireDate != null) ? expireDate : accrualDate;
|
||||||
|
|
||||||
// BigDecimal actualEarnings = BigDecimal.ZERO;
|
|
||||||
Long id = row.getLong(REPORT_FIELDS[13]); // id
|
Long id = row.getLong(REPORT_FIELDS[13]); // id
|
||||||
DynamicObject[] load = BusinessDataServiceHelper.load("cim_redeem", "id,redeemdate,lastmodifytime,realrevenue",
|
DynamicObject[] load = BusinessDataServiceHelper.load("cim_redeem", "id,redeemdate,lastmodifytime,realrevenue",
|
||||||
(new QFilter("sourcebillid", QCP.equals, id)).toArray());
|
(new QFilter("sourcebillid", QCP.equals, id)).toArray());
|
||||||
|
|
||||||
// 计算实际收益
|
|
||||||
// if (load != null && load.length != 0) {
|
|
||||||
// for (DynamicObject dynamicObject : load) {
|
|
||||||
// BigDecimal realrevenue = dynamicObject.getBigDecimal("realrevenue");
|
|
||||||
// actualEarnings = actualEarnings.add(realrevenue);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (valueDate != null) {
|
if (valueDate != null) {
|
||||||
String status = row.getString(REPORT_FIELDS[14]); // 状态
|
String status = row.getString(REPORT_FIELDS[14]); // 状态
|
||||||
if (status.equals("subscribe_end")) {
|
if (status.equals("subscribe_end")) {
|
||||||
|
|
@ -762,7 +729,6 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
row.set(DYNAMICS_FIELDS[10], isExpired); // 是否到期
|
row.set(DYNAMICS_FIELDS[10], isExpired); // 是否到期
|
||||||
|
|
||||||
row.set(REPORT_FIELDS[3], day); // 产品期限天数
|
row.set(REPORT_FIELDS[3], day); // 产品期限天数
|
||||||
//row.set(DYNAMICS_FIELDS[8], actualEarnings); // 实际收益
|
|
||||||
|
|
||||||
return day;
|
return day;
|
||||||
}
|
}
|
||||||
|
|
@ -776,7 +742,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预计收益 = 产品期限 * 金额(千元) * 预计业绩比较基准 / 365
|
* 预计收益 = 产品期限 * 金额 * 预计业绩比较基准 / 365
|
||||||
* @param expectedRate 预计业绩比较基准(%)
|
* @param expectedRate 预计业绩比较基准(%)
|
||||||
* @param day 总天数
|
* @param day 总天数
|
||||||
* @param amount 投资金额
|
* @param amount 投资金额
|
||||||
|
|
@ -786,7 +752,7 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
|
|
||||||
BigDecimal projectRevenue = BigDecimal.ZERO;
|
BigDecimal projectRevenue = BigDecimal.ZERO;
|
||||||
if (expectedRate != null) {
|
if (expectedRate != null) {
|
||||||
projectRevenue = new BigDecimal(day).multiply(amount.divide(new BigDecimal(1000), 10, RoundingMode.HALF_UP))
|
projectRevenue = new BigDecimal(day).multiply(amount)
|
||||||
.multiply(expectedRate.divide(new BigDecimal(100), 10, RoundingMode.HALF_UP))
|
.multiply(expectedRate.divide(new BigDecimal(100), 10, RoundingMode.HALF_UP))
|
||||||
.divide(basisDay, 8, RoundingMode.HALF_UP);
|
.divide(basisDay, 8, RoundingMode.HALF_UP);
|
||||||
row.set(DYNAMICS_FIELDS[0], projectRevenue);
|
row.set(DYNAMICS_FIELDS[0], projectRevenue);
|
||||||
|
|
@ -819,10 +785,9 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
|
|
||||||
// 检查所有参数是否非空
|
// 检查所有参数是否非空
|
||||||
if (buyCopies != null && monthNetWorth != null && netWorth != null && startBuyCopies != null) {
|
if (buyCopies != null && monthNetWorth != null && netWorth != null && startBuyCopies != null) {
|
||||||
// 计算:(持有份额 * 月末单位净值+(所有赎回单金额+实际收益) - 购买份额 * 购买时单位净值) / 1000
|
// 计算:持有份额 * 月末单位净值+(所有赎回单金额+实际收益) - 购买份额 * 购买时单位净值
|
||||||
revenue = buyCopies.multiply(monthNetWorth)
|
revenue = buyCopies.multiply(monthNetWorth)
|
||||||
.subtract(startBuyCopies.multiply(netWorth).multiply(allRedProductAmount))
|
.subtract(startBuyCopies.multiply(netWorth).multiply(allRedProductAmount));
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
|
|
||||||
// 设置到表格行
|
// 设置到表格行
|
||||||
boolean isValidPeriod = !valueDate.after(accrualDate) && !accrualDate.after(expireDate);
|
boolean isValidPeriod = !valueDate.after(accrualDate) && !accrualDate.after(expireDate);
|
||||||
|
|
@ -838,37 +803,6 @@ public class FinancialFormReport extends AbstractReportFormPlugin implements Plu
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 实际收益 = (持有份额 * 月末单位净值+(赎回单赎回金额、实际收益之和) - 购买份额 * 购买时单位净值) / 1000
|
|
||||||
* @param buyCopies 持有份额(当前份额)
|
|
||||||
* @param monthNetWorth 月末单位净值(当前净值)
|
|
||||||
* @param netWorth 购买时单位净值(初始净值)
|
|
||||||
* @param row 表格行数据
|
|
||||||
* @param startBuyCopies 购买份额(初始份额)
|
|
||||||
* @return 计算后的收益金额(保留2位小数)
|
|
||||||
*/
|
|
||||||
private void countActRevenueAmt(
|
|
||||||
BigDecimal buyCopies,
|
|
||||||
BigDecimal monthNetWorth,
|
|
||||||
BigDecimal netWorth,
|
|
||||||
DynamicObject row,
|
|
||||||
BigDecimal startBuyCopies,
|
|
||||||
BigDecimal redAmount
|
|
||||||
) {
|
|
||||||
|
|
||||||
BigDecimal revenue = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
// 检查所有参数是否非空
|
|
||||||
if (buyCopies != null && monthNetWorth != null && netWorth != null && startBuyCopies != null) {
|
|
||||||
// 计算:(持有份额 * 月末单位净值+(所有赎回单金额+实际收益) - 购买份额 * 购买时单位净值) / 1000
|
|
||||||
revenue = buyCopies.multiply(monthNetWorth)
|
|
||||||
.add(redAmount)
|
|
||||||
.subtract(startBuyCopies.multiply(netWorth))
|
|
||||||
.divide(new BigDecimal(1000), 8, RoundingMode.HALF_UP);
|
|
||||||
row.set(DYNAMICS_FIELDS[8], revenue); // 实际收益
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 辅助方法:比较赎回日期
|
// 辅助方法:比较赎回日期
|
||||||
private boolean isRedeemDateLater(Date newRedeemDate, Date existingRedeemDate) {
|
private boolean isRedeemDateLater(Date newRedeemDate, Date existingRedeemDate) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue