|
@@ -1047,9 +1047,10 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
if(tec.meterInfo.getStartPayFormAll()!=null){
|
|
if(tec.meterInfo.getStartPayFormAll()!=null){
|
|
List<StartPayForm> startPayForm = tec.getMeterInfo().getStartPayFormAll();
|
|
List<StartPayForm> startPayForm = tec.getMeterInfo().getStartPayFormAll();
|
|
if(startPayForm.size()>0){
|
|
if(startPayForm.size()>0){
|
|
- if(tec.getPeriodInfo().getStartIds()!=null) {
|
|
|
|
|
|
+ if(StringUtils.isNotEmpty(tec.getPeriodInfo().getStartIds())) {
|
|
String[] startIds = tec.getPeriodInfo().getStartIds().split(",");
|
|
String[] startIds = tec.getPeriodInfo().getStartIds().split(",");
|
|
if (Arrays.stream(startIds).anyMatch(BaseUtils::isNumber)) {
|
|
if (Arrays.stream(startIds).anyMatch(BaseUtils::isNumber)) {
|
|
|
|
+ /*获取关联期*/
|
|
List<StartPayForm> list = startPayForm.stream().sorted(Comparator.comparingInt(StartPayForm::getPeriodSort)).filter(e -> {
|
|
List<StartPayForm> list = startPayForm.stream().sorted(Comparator.comparingInt(StartPayForm::getPeriodSort)).filter(e -> {
|
|
for (String s : startIds) {
|
|
for (String s : startIds) {
|
|
if (StringUtils.isEquals(s, e.getMeterPeriodId())) {
|
|
if (StringUtils.isEquals(s, e.getMeterPeriodId())) {
|
|
@@ -1061,12 +1062,18 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
if (Func.isNotEmpty(list)) {
|
|
if (Func.isNotEmpty(list)) {
|
|
StartPayForm relate = list.get(list.size() - 1);
|
|
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);
|
|
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().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.setCurrentPeriodPay(cur.toPlainString());
|
|
startPay.setPreviousPeriodEndPay(pre.toPlainString());
|
|
startPay.setPreviousPeriodEndPay(pre.toPlainString());
|
|
startPay.setCurrentPeriodEndPay(addFc.apply(startPay.getCurrentPeriodPay(), startPay.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());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2080,7 +2087,14 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
return pnb;
|
|
return pnb;
|
|
};
|
|
};
|
|
|
|
|
|
-
|
|
|
|
|
|
+ private ToIntFunction<String> meterApplySortFc= number -> {
|
|
|
|
+ int sort=9999999;
|
|
|
|
+ if(number!=null&&!number.isEmpty()){
|
|
|
|
+ String[] arr = number.split("[^\\d.]+");
|
|
|
|
+ sort=IntStream.range(1,arr.length).boxed().mapToInt(i-> (int) (BaseUtils.obj2IntegerZero(arr[i])*Math.pow(10,(6-2*i)))).sum();
|
|
|
|
+ }
|
|
|
|
+ return sort;
|
|
|
|
+ };
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void parse() {
|
|
public void parse() {
|
|
@@ -2100,21 +2114,29 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
imps.setItemName(payment.getName());
|
|
imps.setItemName(payment.getName());
|
|
imps.setFormNumber(payment.getNumber());
|
|
imps.setFormNumber(payment.getNumber());
|
|
imps.setCompleted(ps.stream().map(e->BaseUtils.str2BigDecimal(e.getCompleted())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
imps.setCompleted(ps.stream().map(e->BaseUtils.str2BigDecimal(e.getCompleted())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
- imps.setMoney(ps.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
|
- FormulaUtils.getScale(payment.getUnit()).ifPresent(scale->{
|
|
|
|
- imps.setCompleted(BaseUtils.str2BigDecimal(imps.getCompleted()).setScale(scale,RoundingMode.HALF_UP).toPlainString());
|
|
|
|
- imps.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(imps.getCompleted(), imps.getPrice())).setScale(0,RoundingMode.HALF_UP).toPlainString());
|
|
|
|
- });
|
|
|
|
- imps.setMeterNumber("");
|
|
|
|
- addList.add(imps);
|
|
|
|
- /*部位显示*/
|
|
|
|
- for(Payment pay:ps){
|
|
|
|
- MeterApply meterApply = meterApplyGroup.get(pay.getMiddleMeterId());
|
|
|
|
- InterimMeterPaySummary part = new InterimMeterPaySummary();
|
|
|
|
- part.setItemName(meterApply.getEngineerDivide());
|
|
|
|
- part.setMeterNumber(meterApply.getMeterNumber());
|
|
|
|
- part.setCompleted(pay.getCompleted().toString());
|
|
|
|
- addList.add(part);
|
|
|
|
|
|
+ if(BaseUtils.obj2DoubleZero(imps.getCompleted())>0) {
|
|
|
|
+ imps.setMoney(ps.stream().map(e -> BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString());
|
|
|
|
+ FormulaUtils.getScale(payment.getUnit()).ifPresent(scale -> {
|
|
|
|
+ imps.setCompleted(BaseUtils.str2BigDecimal(imps.getCompleted()).setScale(scale, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
+ imps.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(imps.getCompleted(), imps.getPrice())).setScale(0, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
+ });
|
|
|
|
+ imps.setMeterNumber("");
|
|
|
|
+ addList.add(imps);
|
|
|
|
+ /*部位显示*/
|
|
|
|
+ List<InterimMeterPaySummary> partList = new ArrayList<>();
|
|
|
|
+ for (Payment pay : ps) {
|
|
|
|
+ MeterApply meterApply = meterApplyGroup.get(pay.getMiddleMeterId());
|
|
|
|
+ InterimMeterPaySummary part = new InterimMeterPaySummary();
|
|
|
|
+ part.setItemName(meterApply.getEngineerDivide());
|
|
|
|
+ part.setMeterNumber(meterApply.getMeterNumber());
|
|
|
|
+ part.setCompleted(pay.getCompleted().toString());
|
|
|
|
+ partList.add(part);
|
|
|
|
+ }
|
|
|
|
+ partList.removeIf(e->BaseUtils.obj2DoubleZero(e.getCompleted())<=0);
|
|
|
|
+ if(partList.size()>0){
|
|
|
|
+ partList.sort(Comparator.comparingInt(e->meterApplySortFc.applyAsInt(e.getMeterNumber())));
|
|
|
|
+ addList.addAll(partList);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
});
|
|
});
|
|
dataList.addAll(addList);
|
|
dataList.addAll(addList);
|