diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java index 9e65699..499a448 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java @@ -3359,35 +3359,33 @@ public class OrderStatService { record.set("children", list); if(!CollectionUtils.isEmpty(list)){ - record.set("count", list.stream().map(o->o.getBigDecimal("count")).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("source_weight", list.stream().map(o->o.getBigDecimal("source_weight")).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("trans_price", list.stream().map(o->o.getBigDecimal("trans_price")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("count", list.stream().filter(t->t.getBigDecimal("count") != null).map(o->o.getBigDecimal("count")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("source_weight", list.stream().filter(t->t.getBigDecimal("source_weight") != null).map(o->o.getBigDecimal("source_weight")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("trans_price", list.stream().filter(t->t.getBigDecimal("trans_price") != null).map(o->o.getBigDecimal("trans_price")).reduce(BigDecimal.ZERO, BigDecimal::add)); for (Record sup : sups) { Integer id = sup.getInt("id"); - record.set("xsc_"+id, list.stream().map(o->o.getBigDecimal("xsc_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xst_"+id, list.stream().map(o->o.getBigDecimal("xst_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xss_"+id, list.stream().map(o->o.getBigDecimal("xss_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xsw_"+id, list.stream().map(o->o.getBigDecimal("xsw_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xsc_"+id, list.stream().filter(t->t.getBigDecimal("xsc_"+id) != null).map(o->o.getBigDecimal("xsc_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xst_"+id, list.stream().filter(t->t.getBigDecimal("xst_"+id) != null).map(o->o.getBigDecimal("xst_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xss_"+id, list.stream().filter(t->t.getBigDecimal("xss_"+id) != null).map(o->o.getBigDecimal("xss_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xsw_"+id, list.stream().filter(t->t.getBigDecimal("xsw_"+id) != null).map(o->o.getBigDecimal("xsw_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); } } } } -// typelist.sort(Comparator.comparing(o -> -// Objects.nonNull(o.getInt("trans_co_id")) && o.getInt("trans_co_id") > 0 ? o.getInt("trans_co_id") : Integer.valueOf(-1))); Record record = new Record(); record.set("trans_co_id", -1); record.set("trans_name", "合计"); - record.set("count", customer_sale_list.stream().map(o->o.getBigDecimal("count")).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("source_weight", customer_sale_list.stream().map(o->o.getBigDecimal("source_weight")).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("trans_price", customer_sale_list.stream().map(o->o.getBigDecimal("trans_price")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("count", customer_sale_list.stream().filter(t->t.getBigDecimal("count") != null).map(o->o.getBigDecimal("count")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("source_weight", customer_sale_list.stream().filter(t->t.getBigDecimal("source_weight") != null).map(o->o.getBigDecimal("source_weight")).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("trans_price", customer_sale_list.stream().filter(t->t.getBigDecimal("trans_price") != null).map(o->o.getBigDecimal("trans_price")).reduce(BigDecimal.ZERO, BigDecimal::add)); for (Record sup : sups) { Integer id = sup.getInt("id"); - record.set("xsc_"+id, customer_sale_list.stream().map(o->o.getBigDecimal("xsc_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xst_"+id, customer_sale_list.stream().map(o->o.getBigDecimal("xst_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xss_"+id, customer_sale_list.stream().map(o->o.getBigDecimal("xss_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); - record.set("xsw_"+id, customer_sale_list.stream().map(o->o.getBigDecimal("xsw_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xsc_"+id, customer_sale_list.stream().filter(t->t.getBigDecimal("xsc_"+id) != null).map(o->o.getBigDecimal("xsc_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xst_"+id, customer_sale_list.stream().filter(t->t.getBigDecimal("xst_"+id) != null).map(o->o.getBigDecimal("xst_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xss_"+id, customer_sale_list.stream().filter(t->t.getBigDecimal("xss_"+id) != null).map(o->o.getBigDecimal("xss_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); + record.set("xsw_"+id, customer_sale_list.stream().filter(t->t.getBigDecimal("xsw_"+id) != null).map(o->o.getBigDecimal("xsw_"+id)).reduce(BigDecimal.ZERO, BigDecimal::add)); }