diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/TradefinanceSelectPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/TradefinanceSelectPlugin.java index 8814664..0c50eee 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/TradefinanceSelectPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/TradefinanceSelectPlugin.java @@ -96,11 +96,10 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin { DataSet interestRateDS = TradeFinanceFilterHelper.interestRateDS(loanBillIds, this.cutoffdate, clazz); rows = rows.leftJoin(interestRateDS).on("loanbillid", "loanbillid").select(rows.getRowMeta().getFieldNames(), new String[]{"intrate"}).finish(); rows = this.addFeeAmtDs(rows, loanBillIds); - rows = this.addCalIntAmtDs(rows, loanBillIds); // DynamicObjectCollection rowData = ORM.create().toPlainDynamicObjectCollection(rows); return rows; - + } } } @@ -143,7 +142,8 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin { } protected List orinalAmountField() { - return Arrays.asList("contractamt", "drawamount", "unpaidamt", "unpaidintamt", "paidamt", "estinterestamt", "paidintamt", "feeamt", "compamt" ); + return Arrays.asList("contractamt", "drawamount", "unpaidamt", "unpaidintamt", "paidamt", "estinterestamt", "paidintamt", "feeamt", "compamt" ,"shkd_contractamt","shkd_drawamount_statccy","shkd_remainingamount","shkd_paidamt"); + } protected String getReportField(String field) { @@ -287,7 +287,7 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin { //剩余提款金额:合同份额金额 - 剩余提款金额 DataSet copy = main_balanceDataSet2.copy(); - DataSet main_balanceDataSet3 = copy.addField("shkd_contractamt - shkd_drawamount_statccy", "shkd_drawamount"); + DataSet main_balanceDataSet3 = copy.addField("shkd_contractamt - shkd_drawamount_statccy", "shkd_remainingamount"); //本年还款金额 MainEntityType dataEntityType3 = MetadataServiceHelper.getDataEntityType("cfm_loancontractbill"); @@ -441,14 +441,22 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin { "unpaidamt_statccy", "estinterestamt_statccy", "paidintamt_statccy", - "unpaidintamt_statccy" + "unpaidintamt_statccy", + "shkd_contractamt", + "shkd_drawamount_statccy", + "shkd_remainingamount", + "shkd_paidamt" }, new String[]{String.format("round(drawamount_statccy, %s)", amtPrecision), String.format("round(paidamt_statccy, %s)", amtPrecision), String.format("round(unpaidamt_statccy, %s)", amtPrecision), String.format("round(estinterestamt_statccy, %s)", amtPrecision), String.format("round(paidintamt_statccy, %s)", amtPrecision), - String.format("round(unpaidintamt_statccy, %s)", amtPrecision) + String.format("round(unpaidintamt_statccy, %s)", amtPrecision), + String.format("round(shkd_contractamt, %s)", amtPrecision), + String.format("round(shkd_drawamount_statccy, %s)", amtPrecision), + String.format("round(shkd_remainingamount, %s)", amtPrecision), + String.format("round(shkd_paidamt, %s)", amtPrecision) }); } @@ -593,78 +601,12 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin { return loanBillDS.addField("estinterestamt + feeamt", "compamt"); } - protected DataSet addCalIntAmtDs(DataSet loanBillDS, List loanBillIds) { - List field = new ArrayList(2); - field.add(new Field("loanbillid", DataType.LongType)); - field.add(new Field("calintamt", DataType.BigDecimalType)); - RowMeta rowMeta = new RowMeta((Field[])field.toArray(new Field[0])); - DataSetBuilder datasetBuilder = Algo.create("calIntAmt").createDataSetBuilder(rowMeta); - loanBillIds = (List)loanBillIds.stream().distinct().collect(Collectors.toList()); - List> loanBillIdLists = ListUtils.splitList(loanBillIds, 100L); - StringBuilder noRateLoanBillSB = new StringBuilder(); - Iterator var8 = loanBillIdLists.iterator(); - - label43: - while(var8.hasNext()) { - List loanBillIdList = (List)var8.next(); - List loanBills = InterestCalcHelper.getLoanBills(loanBillIdList); - Iterator var11 = loanBills.iterator(); - - while(true) { - while(true) { - if (!var11.hasNext()) { - continue label43; - } - - DynamicObject loanBill = (DynamicObject)var11.next(); - long loanBillId = loanBill.getLong("id"); - if (RepaymentWayEnum.isHbfx(loanBill.getString("repaymentway"))) { - loanBill.set("repaymentway", RepaymentWayEnum.bqhblsbq.getValue()); - } - - DynamicObjectCollection rateadjust_entry = loanBill.getDynamicObjectCollection("rateadjust_entry"); - if (rateadjust_entry.size() > 0) { - rateadjust_entry.sort(Comparator.comparing((r) -> { - return r.getDate("ra_effectdate"); - })); - Date startIntDate = loanBill.getDate("startintdate"); - if (startIntDate.compareTo(((DynamicObject)rateadjust_entry.get(0)).getDate("ra_effectdate")) < 0) { - noRateLoanBillSB.append(loanBill.getString("billno")).append(","); - continue; - } - } - - IntBillExtInfo intBill; - try { - intBill = InterestCalcHelper.callInt(loanBill); - } catch (TmcBizException var18) { - TmcBizException e = var18; - logger.error("计算利息失败: loanBillId={}, error: {}", loanBillId, e.getMessage()); - continue; - } - - if (EmptyUtil.isNoEmpty(intBill) && EmptyUtil.isNoEmpty(intBill.getDetails())) { - Object[] row = new Object[]{loanBillId, intBill.getAmount()}; - datasetBuilder.append(row); - } - } - } - } - - String LoanBills = noRateLoanBillSB.toString(); - logger.error("利息计算开始日必须要有可用利率: " + LoanBills); - DataSet calIntAmtDs = datasetBuilder.build(); - loanBillDS = loanBillDS.leftJoin(calIntAmtDs).on("loanbillid", "loanbillid").select(loanBillDS.getRowMeta().getFieldNames(), new String[]{"calintamt"}).finish().updateField("calintamt", "case when calintamt is null then 0 else calintamt end"); - loanBillDS = loanBillDS.updateField("calintamt", "case when loantype in ('sl', 'bond') then calintamt*(drawamount/drawamount1) + feeamt else calintamt + feeamt end"); - return loanBillDS; - } - public DataSet reDealResultDataSet(DataSet dataSet, ReportQueryParam queryParam) { if (dataSet != null && !dataSet.isEmpty()) { dataSet = dataSet.addField("case when unpaidamt=0 and cleardate is not null then cleardate else expiredate end", "comprateenddate"); DataSet compDs = this.buildCompCalcDs(dataSet.copy()); dataSet = dataSet.leftJoin(compDs).on("loanbillid", "compid").select(dataSet.getRowMeta().getFieldNames(), new String[]{"compyearday", "compdays"}).finish(); - dataSet = dataSet.addField("case when drawamount=0 or compdays=0 then 0 else calintamt * 100 * compyearday /(drawamount * compdays) end", "comprate_statccy"); + dataSet = dataSet.addField("case when drawamount_statccy=0 or compdays=0 then 0 else compamt_statccy * 100 * compyearday /(drawamount_statccy * compdays) end", "comprate_statccy"); DataSet totalDs = dataSet.filter("sumlevel=2"); dataSet = dataSet.filter("sumlevel!=2"); dataSet = dataSet.orderBy((String[])this.orderByFields().toArray(new String[0]));