理财报表位数改动、千元去除
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