|
@@ -39,7 +39,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
private Function<Long, List<MeterApply>> meterApplyFc;
|
|
|
private Function<Long, List<StartPayForm>> stayPayFormFc;
|
|
|
private ElementWriter elementWriter;
|
|
|
- /*执行链*/
|
|
|
+ /**执行链*/
|
|
|
private List<Special> specialList = new ArrayList<>();
|
|
|
/**支付章节*/
|
|
|
private List<InventoryForm> chapters = new ArrayList<>();
|
|
@@ -47,6 +47,8 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
private List<Payment> previous =new ArrayList<>();
|
|
|
/**本期支付信息*/
|
|
|
private List<Payment> current =new ArrayList<>();
|
|
|
+ /**累计到本期末支付信息*/
|
|
|
+ private List<Payment> paymentsPeriodEnd =new ArrayList<>();
|
|
|
|
|
|
private List<InterimPaymentCertificate> interimPaymentCertificates =new ArrayList<>();
|
|
|
/*求百分比*/
|
|
@@ -329,6 +331,8 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
previous = paymentList.stream().filter(e->e.getSort()<tec.periodInfo.getSort()).collect(Collectors.toList());
|
|
|
/*当前计量期数据*/
|
|
|
current = paymentList.stream().filter(e-> e.getSort().equals(tec.periodInfo.getSort())).collect(Collectors.toList());
|
|
|
+ /*累计到本期末*/
|
|
|
+ paymentsPeriodEnd=paymentList.stream().filter(e->e.getSort()<=tec.periodInfo.getSort()).collect(Collectors.toList());
|
|
|
/*往期每章节的实际花费*/
|
|
|
Map<String,BigDecimal> previousMoney= this.moneySum.apply(previous);
|
|
|
/*当前计量期每章节的实际花费*/
|
|
@@ -520,7 +524,38 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
LinkedHashMap<String,Summary> currentSummary = toSummary(current);
|
|
|
LinkedHashMap<String,Summary> preSummary = toSummary(previous);
|
|
|
List<SubprojectInterimPaymentSummary> totalList = new ArrayList<>();
|
|
|
- for(Map.Entry<String,Summary> form:currentSummary.entrySet()){
|
|
|
+ List<String> numbers= paymentsPeriodEnd.stream().map(Payment::getNumber).distinct().collect(Collectors.toList());
|
|
|
+ numbers.forEach(number->{
|
|
|
+ Summary pre =preSummary.get(number);
|
|
|
+ Summary cur = currentSummary.get(number);
|
|
|
+ SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
|
|
|
+ Summary main =cur;
|
|
|
+ if(main==null)main=pre;
|
|
|
+ sis.setFormNumber(main.getFormNumber());
|
|
|
+ sis.setItemName(main.getItemName());
|
|
|
+ sis.setUnit(main.getUnit());
|
|
|
+ sis.setContractTotal(main.getContractTotal().toString());
|
|
|
+ sis.setChangeTotal(main.getChangeTotal().toString());
|
|
|
+ sis.setContractMoney(main.getContractMoney().toString());
|
|
|
+ sis.setChangeMoney(main.getChangeMoney().toString());
|
|
|
+ if(cur!=null){
|
|
|
+ sis.setCurrentPeriodCompleted(cur.getCompleted().toString());
|
|
|
+ sis.setCurrentPeriodPay(cur.getCurrentPeriodPay().toString());
|
|
|
+ }
|
|
|
+ if(pre!=null){
|
|
|
+ sis.setPreviousPeriodPay(pre.getMoney().toString());
|
|
|
+ sis.setPreviousPeriodCompleted(pre.getCompleted().toString());
|
|
|
+ }
|
|
|
+ if(cur!=null&&pre!=null){
|
|
|
+ main.merge(pre);
|
|
|
+ }
|
|
|
+ sis.setCompleted(main.getCompleted().toString());
|
|
|
+ sis.setCurrentPeriodPay(main.getCurrentPeriodPay().toString());
|
|
|
+ sis.setCurrentPeriodEndPay(main.getCurrentPeriodEndPay().toString());
|
|
|
+ sis.setPayRatio(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
|
|
|
+ totalList.add(sis);
|
|
|
+ });
|
|
|
+ /*for(Map.Entry<String,Summary> form:currentSummary.entrySet()){
|
|
|
SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
|
|
|
Summary pre =preSummary.get(form.getKey());
|
|
|
Summary summary = form.getValue();
|
|
@@ -531,9 +566,10 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
sis.setChangeTotal(summary.getChangeTotal().toString());
|
|
|
sis.setContractMoney(summary.getContractMoney().toString());
|
|
|
sis.setChangeMoney(summary.getChangeMoney().toString());
|
|
|
+
|
|
|
sis.setCurrentPeriodCompleted(summary.getCompleted().toString());
|
|
|
sis.setCurrentPeriodPay(summary.getCurrentPeriodPay().toString());
|
|
|
- /*当前期和往期统计*/
|
|
|
+ *//*当前期和往期统计*//*
|
|
|
summary.merge(pre);
|
|
|
if(pre!=null){
|
|
|
sis.setPreviousPeriodPay(pre.getMoney().toString());
|
|
@@ -544,9 +580,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
sis.setCurrentPeriodEndPay(summary.getCurrentPeriodEndPay().toString());
|
|
|
sis.setPayRatio(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
|
|
|
totalList.add(sis);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ }*/
|
|
|
LinkedHashMap<String,List<SubprojectInterimPaymentSummary>> chapterGroup= totalList.stream().collect(Collectors.groupingBy(e->getPrefix(e.getFormNumber()),LinkedHashMap::new,Collectors.toList()));
|
|
|
AtomicInteger loop = new AtomicInteger(chapterGroup.size());
|
|
|
chapterGroup.forEach((k,v)->{
|