|
@@ -73,6 +73,9 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
return aBd.multiply(new BigDecimal(100)).divide(bBd, 6, RoundingMode.HALF_UP).toString();
|
|
|
};
|
|
|
|
|
|
+ /*计量单累加*/
|
|
|
+ private Function<List<Payment>,String> paymentSumFc=FormulaUtils.createSumFunction(e->BaseUtils.str2BigDecimal(e.getMoney()));
|
|
|
+
|
|
|
/*减法*/
|
|
|
private BinaryOperator<String> subtractFc = (a,b)-> BaseUtils.str2BigDecimal(a).subtract(BaseUtils.str2BigDecimal(b)).toString();
|
|
|
/*乘法*/
|
|
@@ -366,7 +369,6 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
itemNamesMap.put("扣回动员预付款","-100");
|
|
|
itemNamesMap.put("实际支付金额","-1");
|
|
|
}
|
|
|
-
|
|
|
@Override
|
|
|
public boolean ready() {
|
|
|
return true;
|
|
@@ -431,13 +433,13 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
sc.setPrice(payment.getPrice());
|
|
|
sc.setContractAmount(payment.getContractMoney());
|
|
|
/*本期*/
|
|
|
- sc.setCurrentAmount(c.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
|
|
|
+ sc.setCurrentAmount(paymentSumFc.apply(c));
|
|
|
sc.setCurrentRatio(ratioFc.apply(sc.getCurrentAmount(),sc.getContractAmount()));
|
|
|
/*上期末*/
|
|
|
- sc.setPreviousEndAmount(p.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
|
|
|
+ sc.setPreviousEndAmount(paymentSumFc.apply(p));
|
|
|
sc.setPreviousEndRatio(ratioFc.apply(sc.getPreviousEndAmount(),sc.getContractAmount()));
|
|
|
/*本期末*/
|
|
|
- sc.setPeriodEndAmount(t.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
|
|
|
+ sc.setPeriodEndAmount(paymentSumFc.apply(t));
|
|
|
sc.setPeriodEndRatio(ratioFc.apply(sc.getPeriodEndAmount(),sc.getContractAmount()));
|
|
|
|
|
|
current.setFormName(v);
|
|
@@ -1533,6 +1535,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
configMap.put(f,c);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|
|
|
interface Special{
|
|
|
/**是否满足执行条件*/
|