提交人:刘森澳
日期:2025/4/29 15:19 内容:1、融资动态查询明细表查询过滤BUG修复/jar更新为正式环境;
This commit is contained in:
parent
bfc9144226
commit
b80131d5b7
|
@ -96,7 +96,6 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||||
DataSet interestRateDS = TradeFinanceFilterHelper.interestRateDS(loanBillIds, this.cutoffdate, clazz);
|
DataSet interestRateDS = TradeFinanceFilterHelper.interestRateDS(loanBillIds, this.cutoffdate, clazz);
|
||||||
rows = rows.leftJoin(interestRateDS).on("loanbillid", "loanbillid").select(rows.getRowMeta().getFieldNames(), new String[]{"intrate"}).finish();
|
rows = rows.leftJoin(interestRateDS).on("loanbillid", "loanbillid").select(rows.getRowMeta().getFieldNames(), new String[]{"intrate"}).finish();
|
||||||
rows = this.addFeeAmtDs(rows, loanBillIds);
|
rows = this.addFeeAmtDs(rows, loanBillIds);
|
||||||
rows = this.addCalIntAmtDs(rows, loanBillIds);
|
|
||||||
// DynamicObjectCollection rowData = ORM.create().toPlainDynamicObjectCollection(rows);
|
// DynamicObjectCollection rowData = ORM.create().toPlainDynamicObjectCollection(rows);
|
||||||
return rows;
|
return rows;
|
||||||
|
|
||||||
|
@ -143,7 +142,8 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<String> orinalAmountField() {
|
protected List<String> 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) {
|
protected String getReportField(String field) {
|
||||||
|
@ -287,7 +287,7 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||||
|
|
||||||
//剩余提款金额:合同份额金额 - 剩余提款金额
|
//剩余提款金额:合同份额金额 - 剩余提款金额
|
||||||
DataSet copy = main_balanceDataSet2.copy();
|
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");
|
MainEntityType dataEntityType3 = MetadataServiceHelper.getDataEntityType("cfm_loancontractbill");
|
||||||
|
@ -441,14 +441,22 @@ public class TradefinanceSelectPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||||
"unpaidamt_statccy",
|
"unpaidamt_statccy",
|
||||||
"estinterestamt_statccy",
|
"estinterestamt_statccy",
|
||||||
"paidintamt_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),
|
new String[]{String.format("round(drawamount_statccy, %s)", amtPrecision),
|
||||||
String.format("round(paidamt_statccy, %s)", amtPrecision),
|
String.format("round(paidamt_statccy, %s)", amtPrecision),
|
||||||
String.format("round(unpaidamt_statccy, %s)", amtPrecision),
|
String.format("round(unpaidamt_statccy, %s)", amtPrecision),
|
||||||
String.format("round(estinterestamt_statccy, %s)", amtPrecision),
|
String.format("round(estinterestamt_statccy, %s)", amtPrecision),
|
||||||
String.format("round(paidintamt_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");
|
return loanBillDS.addField("estinterestamt + feeamt", "compamt");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DataSet addCalIntAmtDs(DataSet loanBillDS, List<Long> loanBillIds) {
|
|
||||||
List<Field> 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<List<Long>> loanBillIdLists = ListUtils.splitList(loanBillIds, 100L);
|
|
||||||
StringBuilder noRateLoanBillSB = new StringBuilder();
|
|
||||||
Iterator var8 = loanBillIdLists.iterator();
|
|
||||||
|
|
||||||
label43:
|
|
||||||
while(var8.hasNext()) {
|
|
||||||
List<Long> loanBillIdList = (List)var8.next();
|
|
||||||
List<DynamicObject> 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) {
|
public DataSet reDealResultDataSet(DataSet dataSet, ReportQueryParam queryParam) {
|
||||||
if (dataSet != null && !dataSet.isEmpty()) {
|
if (dataSet != null && !dataSet.isEmpty()) {
|
||||||
dataSet = dataSet.addField("case when unpaidamt=0 and cleardate is not null then cleardate else expiredate end", "comprateenddate");
|
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 compDs = this.buildCompCalcDs(dataSet.copy());
|
||||||
dataSet = dataSet.leftJoin(compDs).on("loanbillid", "compid").select(dataSet.getRowMeta().getFieldNames(), new String[]{"compyearday", "compdays"}).finish();
|
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 totalDs = dataSet.filter("sumlevel=2");
|
||||||
dataSet = dataSet.filter("sumlevel!=2");
|
dataSet = dataSet.filter("sumlevel!=2");
|
||||||
dataSet = dataSet.orderBy((String[])this.orderByFields().toArray(new String[0]));
|
dataSet = dataSet.orderBy((String[])this.orderByFields().toArray(new String[0]));
|
||||||
|
|
Loading…
Reference in New Issue