|
@@ -253,39 +253,46 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
List<StartPayForm> startPayForms= stayPayFormFc.apply(tec.getContractId());
|
|
List<StartPayForm> startPayForms= stayPayFormFc.apply(tec.getContractId());
|
|
if(Func.isNotEmpty(startPayForms)){
|
|
if(Func.isNotEmpty(startPayForms)){
|
|
startPayForms.sort(Comparator.comparingInt(StartPayForm::getPeriodSort));
|
|
startPayForms.sort(Comparator.comparingInt(StartPayForm::getPeriodSort));
|
|
- double sum,previousD,currentD;
|
|
|
|
|
|
+ BigDecimal sum,previousD,currentD;
|
|
List<StartPayForm> current = startPayForms.stream().filter(s->s.getMeterPeriodId().equals(tec.getPeriodId())).collect(Collectors.toList());
|
|
List<StartPayForm> current = startPayForms.stream().filter(s->s.getMeterPeriodId().equals(tec.getPeriodId())).collect(Collectors.toList());
|
|
if(current.size()>0){
|
|
if(current.size()>0){
|
|
StartPayForm one = current.get(0);
|
|
StartPayForm one = current.get(0);
|
|
- sum= startPayForms.stream().filter(s->s.getPeriodSort()<=one.getPeriodSort()).mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
|
|
|
|
- /*累计*/
|
|
|
|
- elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_3"),StringUtils.number2String(sum,2));
|
|
|
|
- sumStart=StringUtils.number2String(sum,3);
|
|
|
|
- currentD=current.stream().mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
|
|
|
|
- elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_2"),StringUtils.number2String(currentD,2));
|
|
|
|
- currentStart=StringUtils.number2String(currentD,3);
|
|
|
|
|
|
+ sum= startPayForms.stream().filter(s->s.getPeriodSort()<=one.getPeriodSort()).map(s->BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO,BigDecimal::add);
|
|
|
|
+ sumStart=sum.toPlainString();
|
|
|
|
+ currentD=current.stream().map(s->BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO,BigDecimal::add);;
|
|
|
|
+ currentStart=currentD.toPlainString();
|
|
tec.getPeriodInfo().setCurTotal(currentStart);
|
|
tec.getPeriodInfo().setCurTotal(currentStart);
|
|
- FormulaUtils.elementFindByKey(fdm,"key_5").ifPresent(t->{
|
|
|
|
- elementWriter.write(t,one.getFileName());
|
|
|
|
- });
|
|
|
|
|
|
+ tec.getPeriodInfo().setTotal(sumStart);
|
|
|
|
+ Map<String,Object> dataMap= new HashMap<>();
|
|
|
|
+ /*本期支付*/
|
|
|
|
+ dataMap.put("key_2",currentD.toPlainString());
|
|
|
|
+ /*累计*/
|
|
|
|
+ dataMap.put("key_3",sum.toPlainString());
|
|
|
|
+ dataMap.put("key_5",one.getFileName());
|
|
/*计算式*/
|
|
/*计算式*/
|
|
- FormulaUtils.elementFindByKey(fdm,"key_6").ifPresent(t->{
|
|
|
|
- elementWriter.write(t,one.getCalculateFormula());
|
|
|
|
- });
|
|
|
|
|
|
+ dataMap.put("key_6",one.getCalculateFormula());
|
|
/*申请依据*/
|
|
/*申请依据*/
|
|
- FormulaUtils.elementFindByKey(fdm,"key_7").ifPresent(t->{
|
|
|
|
- elementWriter.write(t,one.getApplyCause());
|
|
|
|
- });
|
|
|
|
|
|
+ dataMap.put("key_7",one.getApplyCause());
|
|
|
|
+ /*支付期限*/
|
|
|
|
+ dataMap.put("key_8",one.getPayDate());
|
|
/*上一期*/
|
|
/*上一期*/
|
|
Optional<Integer> op=startPayForms.stream().map(StartPayForm::getPeriodSort).filter(s->s<one.getPeriodSort()).max(Comparator.comparingInt(s->s));
|
|
Optional<Integer> op=startPayForms.stream().map(StartPayForm::getPeriodSort).filter(s->s<one.getPeriodSort()).max(Comparator.comparingInt(s->s));
|
|
if(op.isPresent()){
|
|
if(op.isPresent()){
|
|
- previousD= startPayForms.stream().filter(s->s.getPeriodSort().equals(one.getPeriodSort())).mapToDouble(s->Double.parseDouble(s.getMeterMoney())).sum();
|
|
|
|
- elementWriter.write(fdm.get(AdvancePaymentCertificate.TBN+":key_1"),StringUtils.number2String(previousD,2));
|
|
|
|
|
|
+ previousD= startPayForms.stream().filter(s->s.getPeriodSort().equals(one.getPeriodSort())).map(s->BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO,BigDecimal::add);
|
|
|
|
+ dataMap.put("key_1",previousD.toPlainString());
|
|
|
|
+ tec.getPeriodInfo().setPreTotal(previousD.toPlainString());
|
|
}
|
|
}
|
|
|
|
+ setValue(dataMap,fdm);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+ /*写入目标元素*/
|
|
|
|
+ public void setValue(Map<String,Object> dataMap,LinkedHashMap<String,FormData> fdm){
|
|
|
|
+ dataMap.forEach((k,v)->{
|
|
|
|
+ FormulaUtils.elementFindByKey(fdm,k).ifPresent(t->{
|
|
|
|
+ elementWriter.write(t,v);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -642,6 +649,9 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
if("小计".equals(k)){
|
|
if("小计".equals(k)){
|
|
addGetSetConfig(sc, summaryConfigMap, SupervisionCertificate::getContractAmount, sc::setContractAmount);
|
|
addGetSetConfig(sc, summaryConfigMap, SupervisionCertificate::getContractAmount, sc::setContractAmount);
|
|
}
|
|
}
|
|
|
|
+ if("合计".equals(k)){
|
|
|
|
+ addGetSetConfig(sc, summaryConfigMap, SupervisionCertificate::getContractAmount, sc::setContractAmount);
|
|
|
|
+ }
|
|
if("动员预付款".equals(k)){
|
|
if("动员预付款".equals(k)){
|
|
sc.setContractAmount(StringUtils.handleNull(tec.meterInfo.getBaseInfo().getDyTotalAmount()));
|
|
sc.setContractAmount(StringUtils.handleNull(tec.meterInfo.getBaseInfo().getDyTotalAmount()));
|
|
sc.setCurrentAmount(currentStart);
|
|
sc.setCurrentAmount(currentStart);
|