|
@@ -232,6 +232,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
this.specialList.add(new MaterialSp());
|
|
|
this.specialList.add(new MaterialsArrivalSp());
|
|
|
}else if(MeterType.INTERIM.equals(tec.getMeterType())){
|
|
|
+ this.specialList.add(new MaterialSp());
|
|
|
/*材料*/
|
|
|
this.specialList.add(new MaterialsArrivalSp());
|
|
|
/*中期支付证书*/
|
|
@@ -466,7 +467,11 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
public void parse() {
|
|
|
builderFormDatas(MaterialPriceDifferential.class);
|
|
|
/*本期材料*/
|
|
|
- materials=tec.meterInfo.getMaterialsAll().stream().filter(e->tec.getPeriodId().equals(e.getPeriodId())).collect(Collectors.toList());
|
|
|
+ if(MeterType.INTERIM.equals(tec.getMeterType())){
|
|
|
+ materials=tec.meterInfo.getMaterialsAll();
|
|
|
+ }else{
|
|
|
+ materials=tec.meterInfo.getMaterialsAll().stream().filter(e->tec.getPeriodId().equals(e.getPeriodId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if(materials.size()>0){
|
|
|
dataList.addAll(materials.stream().map(e->{
|
|
|
MaterialPriceDifferential mpd = new MaterialPriceDifferential();
|
|
@@ -1049,6 +1054,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
/*中期计量第一期之前的*/
|
|
|
List<StartPayForm> startPayForm = tec.getMeterInfo().getStartPayFormAll();
|
|
|
if(startPayForm.size()>0){
|
|
|
+ InterimPayCertificateItem preStart = previousMap.get("动员预付款");
|
|
|
if(StringUtils.isNotEmpty(tec.getPeriodInfo().getStartIds())) {
|
|
|
String[] startIds = tec.getPeriodInfo().getStartIds().split(",");
|
|
|
if (Arrays.stream(startIds).anyMatch(BaseUtils::isNumber)) {
|
|
@@ -1062,21 +1068,24 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
return false;
|
|
|
}).collect(Collectors.toList());
|
|
|
if (Func.isNotEmpty(list)) {
|
|
|
- StartPayForm relate = list.get(list.size() - 1);
|
|
|
- BigDecimal pre = startPayForm.stream().filter(s -> s.getPeriodSort() <relate.getPeriodSort()).map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ StartPayForm relate = list.get(0);
|
|
|
+ /* BigDecimal pre = startPayForm.stream().filter(s -> s.getPeriodSort() <relate.getPeriodSort()).map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);*/
|
|
|
BigDecimal cur = list.stream().map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
startPay.setCurrentPeriodPay(cur.toPlainString());
|
|
|
- startPay.setPreviousPeriodEndPay(pre.toPlainString());
|
|
|
+ if(preStart!=null) {
|
|
|
+ /*获取上期末支付*/
|
|
|
+ startPay.setPreviousPeriodEndPay(preStart.getPreviousPeriodEndPay());
|
|
|
+ }
|
|
|
startPay.setCurrentPeriodEndPay(addFc.apply(startPay.getCurrentPeriodPay(), startPay.getPreviousPeriodEndPay()));
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
- InterimPayCertificateItem preStart = previousMap.get("动员预付款");
|
|
|
if(preStart!=null) {
|
|
|
startPay.setPreviousPeriodEndPay(preStart.getCurrentPeriodEndPay());
|
|
|
startPay.setCurrentPeriodEndPay(preStart.getCurrentPeriodEndPay());
|
|
|
}else{
|
|
|
- BigDecimal first = startPayForm.stream().map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ /*不存在上期,则认为是第一期,需要根据计量期时间筛选*/
|
|
|
+ BigDecimal first = startPayForm.stream().filter(s->s.getYearMonthInt()<=tec.periodInfo.getYearMonthInt()).map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
startPay.setPreviousPeriodEndPay(first.toPlainString());
|
|
|
startPay.setCurrentPeriodEndPay(first.toPlainString());
|
|
|
}
|
|
@@ -1204,16 +1213,24 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
}
|
|
|
finalBlj.setCurrentPeriodEndPay(multiFc.apply(t.getCurrentPeriodEndPay(),"0.1"));
|
|
|
dataList.stream().filter(e-> "实际支付".equals(e.getChapterSeq())).findFirst().ifPresent(w->{
|
|
|
- w.setCurrentPeriodPay(subtractFc.apply(w.getCurrentPeriodPay(),finalBlj.getCurrentPeriodPay()));
|
|
|
+ w.setCurrentPeriodPay(StringUtils.number2String(subtractFc.apply(w.getCurrentPeriodPay(),finalBlj.getCurrentPeriodPay()),0));
|
|
|
if(BaseUtils.obj2DoubleZero(t.getPreviousPeriodEndPay())>0) {
|
|
|
- w.setPreviousPeriodEndPay(subtractFc.apply(w.getPreviousPeriodEndPay(), finalBlj.getPreviousPeriodEndPay()));
|
|
|
+ w.setPreviousPeriodEndPay(StringUtils.number2String(subtractFc.apply(w.getPreviousPeriodEndPay(), finalBlj.getPreviousPeriodEndPay()),0));
|
|
|
}
|
|
|
- w.setCurrentPeriodEndPay(subtractFc.apply(w.getCurrentPeriodEndPay(),finalBlj.getCurrentPeriodEndPay()));
|
|
|
+ w.setCurrentPeriodEndPay(StringUtils.number2String(subtractFc.apply(w.getCurrentPeriodEndPay(),finalBlj.getCurrentPeriodEndPay()),0));
|
|
|
+ });
|
|
|
+ itemList.stream().filter(item->"保留金".equals(item.getChapterSeq())).findFirst().ifPresent(w->{
|
|
|
+ w.setPreviousPeriodEndPay(finalBlj.getPreviousPeriodEndPay());
|
|
|
+ w.setCurrentPeriodPay(finalBlj.getCurrentPeriodPay());
|
|
|
+ w.setCurrentPeriodEndPay(finalBlj.getCurrentPeriodEndPay());
|
|
|
});
|
|
|
});
|
|
|
if(peerMap.size()>0) {
|
|
|
/*等合计项目计算完毕,再赋值*/
|
|
|
peerMap.forEach((sc, item) -> {
|
|
|
+ if("合计".equals(item.getChapterSeq())){
|
|
|
+ item.setContractAmount(sc.getContractAmount());
|
|
|
+ }
|
|
|
item.setPreviousPeriodEndPay(sc.getPreviousPeriodEndPay());
|
|
|
item.setCurrentPeriodPay(sc.getCurrentPeriodPay());
|
|
|
item.setCurrentPeriodEndPay(sc.getCurrentPeriodEndPay());
|