|
@@ -865,6 +865,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
LinkedHashMap<String,List<MaterialsArrival>> group= list.stream().collect(Collectors.groupingBy(MaterialsArrival::getName, LinkedHashMap::new,Collectors.toList()));
|
|
LinkedHashMap<String,List<MaterialsArrival>> group= list.stream().collect(Collectors.groupingBy(MaterialsArrival::getName, LinkedHashMap::new,Collectors.toList()));
|
|
int rowSize= capacity-1;
|
|
int rowSize= capacity-1;
|
|
AtomicInteger sn= new AtomicInteger(1);
|
|
AtomicInteger sn= new AtomicInteger(1);
|
|
|
|
+ AtomicBoolean isLast= new AtomicBoolean(false);
|
|
group.forEach((k,v)->{
|
|
group.forEach((k,v)->{
|
|
List<List<MaterialsArrival>> pages=BaseUtils.splitList(v,rowSize);
|
|
List<List<MaterialsArrival>> pages=BaseUtils.splitList(v,rowSize);
|
|
List<MaterialsArrival> tmp = new ArrayList<>();
|
|
List<MaterialsArrival> tmp = new ArrayList<>();
|
|
@@ -872,6 +873,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
List<MaterialsArrival> data = pages.get(i);
|
|
List<MaterialsArrival> data = pages.get(i);
|
|
data.forEach(ma->{
|
|
data.forEach(ma->{
|
|
/*排序*/
|
|
/*排序*/
|
|
|
|
+ isLast.set(sn.get() == list.size());
|
|
ma.setSn( String.valueOf( sn.getAndIncrement()));
|
|
ma.setSn( String.valueOf( sn.getAndIncrement()));
|
|
});
|
|
});
|
|
tmp.addAll(data);
|
|
tmp.addAll(data);
|
|
@@ -880,26 +882,39 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
/*最后一页合计*/
|
|
/*最后一页合计*/
|
|
over--;
|
|
over--;
|
|
}
|
|
}
|
|
|
|
+ if(isLast.get()){
|
|
|
|
+ over--;
|
|
|
|
+ }
|
|
if(over>0){
|
|
if(over>0){
|
|
tmp.addAll(Collections.nCopies(over,new MaterialsArrival()));
|
|
tmp.addAll(Collections.nCopies(over,new MaterialsArrival()));
|
|
}
|
|
}
|
|
- MaterialsArrival xj= new MaterialsArrival();
|
|
|
|
-
|
|
|
|
- xj.setName("小计");
|
|
|
|
|
|
+ /* MaterialsArrival xj= new MaterialsArrival();
|
|
|
|
+ xj.setName("本页小计");
|
|
xj.setQuantity(data.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
xj.setQuantity(data.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
xj.setAmount(data.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
xj.setAmount(data.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
xj.setTotal(data.stream().map(e->BaseUtils.str2BigDecimal(e.getTotal())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
xj.setTotal(data.stream().map(e->BaseUtils.str2BigDecimal(e.getTotal())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
- tmp.add(xj);
|
|
|
|
|
|
+ tmp.add(xj);*/
|
|
}
|
|
}
|
|
- MaterialsArrival hj= new MaterialsArrival();
|
|
|
|
- hj.setName("合计");
|
|
|
|
- hj.setQuantity(v.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
- hj.setAmount(v.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
- hj.setTotal(v.stream().map(e->BaseUtils.str2BigDecimal(e.getTotal())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
- materialSum=StringUtils.number2String(hj.getTotal(),0);
|
|
|
|
- tmp.add(hj);
|
|
|
|
|
|
+ MaterialsArrival xj= new MaterialsArrival();
|
|
|
|
+ xj.setName("小计");
|
|
|
|
+ xj.setQuantity(v.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ xj.setAmount(v.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ xj.setTotal(v.stream().map(e->BaseUtils.str2BigDecimal(e.getTotal())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ /*materialSum=StringUtils.number2String(xj.getTotal(),0);*/
|
|
|
|
+ tmp.add(xj);
|
|
dataList.addAll(tmp);
|
|
dataList.addAll(tmp);
|
|
|
|
+ if(isLast.get()){
|
|
|
|
+ /*最后一条*/
|
|
|
|
+ MaterialsArrival hj= new MaterialsArrival();
|
|
|
|
+ hj.setName("合计");
|
|
|
|
+ hj.setQuantity(list.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ hj.setAmount(list.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ hj.setTotal(list.stream().map(e->BaseUtils.str2BigDecimal(e.getTotal())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
+ materialSum=StringUtils.number2String(hj.getTotal(),0);
|
|
|
|
+ dataList.add(hj);
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
+
|
|
}
|
|
}
|
|
putOut(MaterialsArrival.class);
|
|
putOut(MaterialsArrival.class);
|
|
}
|
|
}
|
|
@@ -1221,7 +1236,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
/*小计本期累计支付*/
|
|
/*小计本期累计支付*/
|
|
rebateIncentiveAdvPay.setSubtotal(subtotal.toPlainString());
|
|
rebateIncentiveAdvPay.setSubtotal(subtotal.toPlainString());
|
|
tec.periodInfo.setSubTotal( dataList.stream().limit(dataList.indexOf(certificate)).map(e->BaseUtils.str2BigDecimal(e.getCurrentPeriodPay())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
tec.periodInfo.setSubTotal( dataList.stream().limit(dataList.indexOf(certificate)).map(e->BaseUtils.str2BigDecimal(e.getCurrentPeriodPay())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
- String dyTotalAmount=baseInfo.getDyTotalAmount().toPlainString();
|
|
|
|
|
|
+ String dyTotalAmount=BaseUtils.str2BigDecimal(baseInfo.getDyTotalAmount()).toPlainString();
|
|
/*当前累计小计>=30 才扣回*/
|
|
/*当前累计小计>=30 才扣回*/
|
|
if(Double.parseDouble(ratioFc.apply(subtotal.toPlainString(),baseInfo.getContractAmount().toPlainString()))>=30) {
|
|
if(Double.parseDouble(ratioFc.apply(subtotal.toPlainString(),baseInfo.getContractAmount().toPlainString()))>=30) {
|
|
/*是否扣回完成*/
|
|
/*是否扣回完成*/
|
|
@@ -1246,7 +1261,9 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
InterimPayCertificateItem preSubTotal = previousMap.get("扣回动员预付款");
|
|
InterimPayCertificateItem preSubTotal = previousMap.get("扣回动员预付款");
|
|
if (finish.get()&&isCur.get()) {
|
|
if (finish.get()&&isCur.get()) {
|
|
/*如果小计累计已经>=79,则全部扣回剩下的*/
|
|
/*如果小计累计已经>=79,则全部扣回剩下的*/
|
|
- rebateIncentiveAdvPay.setCurrentPay(subtractFc.apply(dyTotalAmount,preSubTotal.getCurrentPeriodEndPay()));
|
|
|
|
|
|
+ if(preSubTotal!=null) {
|
|
|
|
+ rebateIncentiveAdvPay.setCurrentPay(subtractFc.apply(dyTotalAmount, preSubTotal.getCurrentPeriodEndPay()));
|
|
|
|
+ }
|
|
rebateIncentiveAdvPay.setRetained(rebateIncentiveAdvPay.getCurrentPay());
|
|
rebateIncentiveAdvPay.setRetained(rebateIncentiveAdvPay.getCurrentPay());
|
|
} else {
|
|
} else {
|
|
rebateIncentiveAdvPay.calc(baseInfo.getContractAmount().toPlainString(), dyTotalAmount);
|
|
rebateIncentiveAdvPay.calc(baseInfo.getContractAmount().toPlainString(), dyTotalAmount);
|