yangyj 1 год назад
Родитель
Сommit
f70ac73726

+ 5 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -88,6 +88,8 @@ public class ExecutorMeter extends FormulaExecutor {
     private BinaryOperator<String> multiFc = (a,b)-> BaseUtils.str2BigDecimal(a).multiply(BaseUtils.str2BigDecimal(b)).toString();
     /*加法*/
     private BinaryOperator<String> addFc = (a,b)-> BaseUtils.str2BigDecimal(a).add(BaseUtils.str2BigDecimal(b)).toString();
+    /*除法*/
+    private BinaryOperator<String> divideFc = (a,b)-> BaseUtils.str2BigDecimal(a).divide(BaseUtils.str2BigDecimal(b)).toPlainString();
 
     /*按照二级清单编号,合计合同清单{合同金额,变更金额}*/
     private Function<List<InventoryForm>, Map<String, BigDecimal[]>> contractMoneySum = data -> data.stream().filter(e->StringUtils.isNotEmpty(e.getContractMoney()))
@@ -680,6 +682,7 @@ public class ExecutorMeter extends FormulaExecutor {
         public void parse() {
             builderFormDatas(MaterialsArrival.class);
             if(materials.size()>0){
+                String ratio = BaseUtils.str2BigDecimal(tec.meterInfo.getBaseInfo().getDeductRatio()).toPlainString();
                 dataList.addAll(materials.stream().map(e->{
                             MaterialsArrival ma = new MaterialsArrival();
                             ma.setPeriodNumber(tec.periodInfo.getPeriodNumber());
@@ -687,8 +690,8 @@ public class ExecutorMeter extends FormulaExecutor {
                             ma.setUnit(e.getUnit());
                             ma.setQuantity(e.getMeterAmount());
                             ma.setPrice(e.getPrice());
-                            ma.setAmount(e.getMeterAmount());
-                            ma.setTotal(e.getAdvancePayment());
+                            ma.setAmount(multiFc.apply(e.getMeterAmount(),e.getPrice()));
+                            ma.setTotal(divideFc.apply(multiFc.apply(ma.getAmount(),ratio),"100"));
                             ma.setSource(e.getSource());
                             /*发票*/
                             ma.setInvoice(e.getStoragePlace());