|
|
@@ -325,30 +325,43 @@ public class ExportOrderController extends BladeController {
|
|
|
//获取订单明细
|
|
|
List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id",item.getTenantId()));
|
|
|
if (CollectionUtils.isNotEmpty(list)){
|
|
|
- item.setAmount(list.stream().filter(e -> e.getAmount() != null).map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
|
|
|
- item.setProcurementCost(list.stream().reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ item.setAmount(list.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ }, BigDecimal::add));//金额求和
|
|
|
+ item.setProcurementCost(list.stream().filter(e -> e.getPurchaseCost() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
return x.add(y.getPurchaseCost().multiply(y.getOrderQuantity()));
|
|
|
},BigDecimal::add));//采购成本和
|
|
|
- item.setPurchasePrice(list.stream().reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ item.setPurchasePrice(list.stream().filter(e -> e.getPurchaseAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
return x.add(y.getPurchaseAmount().multiply(y.getOrderQuantity()));
|
|
|
},BigDecimal::add));//采购报价金额和
|
|
|
+ item.setPartsCost(list.stream().filter(e -> e.getPartsCost() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getPartsCost().multiply(y.getOrderQuantity()));
|
|
|
+ },BigDecimal::add));//配件成本金额和
|
|
|
}
|
|
|
//获取应收费用
|
|
|
- List<OrderFees> orderFees = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 1));
|
|
|
+ List<OrderFees> feesList = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 1));
|
|
|
//获取应付费用
|
|
|
List<OrderFees> orderFeesList = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 2));
|
|
|
- if (CollectionUtils.isNotEmpty(orderFees)){
|
|
|
- item.setFd(orderFees.stream().filter(e -> e.getAmount() != null).map(OrderFees::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ if (CollectionUtils.isNotEmpty(feesList)){
|
|
|
+ item.setFd(feesList.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ },BigDecimal::add));
|
|
|
}else {
|
|
|
item.setFd(BigDecimal.ZERO);
|
|
|
}
|
|
|
if (CollectionUtils.isNotEmpty(orderFeesList)){
|
|
|
- item.setFc(orderFeesList.stream().filter(e -> e.getAmount() != null).map(OrderFees::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ item.setFc(orderFeesList.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ },BigDecimal::add));
|
|
|
}else {
|
|
|
item.setFc(BigDecimal.ZERO);
|
|
|
}
|
|
|
+ //产品利润 销售金额-采购成本金额-配件成本金额
|
|
|
+ item.setGrossProfit(item.getAmount().subtract(item.getProcurementCost()).subtract(item.getPartsCost()));
|
|
|
+ //产品利率
|
|
|
+ item.setGrossProfitRate(item.getGrossProfit().divide(item.getAmount(),2,BigDecimal.ROUND_HALF_UP));
|
|
|
//计算单票利润=单票利润+费用应收-费用应付
|
|
|
- item.setSingleTicketMargin(item.getSingleTicketMargin().add(item.getFd()).subtract(item.getFc()));
|
|
|
+ item.setSingleTicketMargin(item.getAmount().add(item.getFd()).subtract(item.getFc()));
|
|
|
});
|
|
|
}
|
|
|
return R.data(page);
|
|
|
@@ -401,32 +414,44 @@ public class ExportOrderController extends BladeController {
|
|
|
//获取订单明细
|
|
|
List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id",item.getTenantId()));
|
|
|
if (CollectionUtils.isNotEmpty(list)){
|
|
|
- item.setAmount(list.stream().filter(e -> e.getAmount() != null).map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
|
|
|
- item.setProcurementCost(list.stream().reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ item.setAmount(list.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ }, BigDecimal::add));//金额求和
|
|
|
+ item.setProcurementCost(list.stream().filter(e -> e.getPurchaseCost() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
return x.add(y.getPurchaseCost().multiply(y.getOrderQuantity()));
|
|
|
},BigDecimal::add));//采购成本和
|
|
|
- item.setPurchasePrice(list.stream().reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ item.setPurchasePrice(list.stream().filter(e -> e.getPurchaseAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
return x.add(y.getPurchaseAmount().multiply(y.getOrderQuantity()));
|
|
|
},BigDecimal::add));//采购报价金额和
|
|
|
+ item.setPartsCost(list.stream().filter(e -> e.getPartsCost() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getPartsCost().multiply(y.getOrderQuantity()));
|
|
|
+ },BigDecimal::add));//配件成本金额和
|
|
|
}
|
|
|
//获取应收费用
|
|
|
- List<OrderFees> orderFees = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 1));
|
|
|
+ List<OrderFees> feesList = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 1));
|
|
|
//获取应付费用
|
|
|
List<OrderFees> orderFeesList = orderFeesService.list(new QueryWrapper<OrderFees>().eq("pid", item.getId()).eq("is_deleted", 0).eq("tenant_id", item.getTenantId()).eq("fees_type", 2));
|
|
|
- if (CollectionUtils.isNotEmpty(orderFees)){
|
|
|
- item.setFd(orderFees.stream().filter(e -> e.getAmount() != null).map(OrderFees::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ if (CollectionUtils.isNotEmpty(feesList)){
|
|
|
+ item.setFd(feesList.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ },BigDecimal::add));
|
|
|
}else {
|
|
|
item.setFd(BigDecimal.ZERO);
|
|
|
}
|
|
|
if (CollectionUtils.isNotEmpty(orderFeesList)){
|
|
|
- item.setFc(orderFeesList.stream().filter(e -> e.getAmount() != null).map(OrderFees::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ item.setFc(orderFeesList.stream().filter(e -> e.getAmount() != null).reduce(BigDecimal.ZERO,(x,y) ->{
|
|
|
+ return x.add(y.getAmount().multiply(y.getExchangeRate()));
|
|
|
+ },BigDecimal::add));
|
|
|
}else {
|
|
|
item.setFc(BigDecimal.ZERO);
|
|
|
}
|
|
|
+ //产品利润 销售金额-采购成本金额-配件成本金额
|
|
|
+ item.setGrossProfit(item.getAmount().subtract(item.getProcurementCost()).subtract(item.getPartsCost()));
|
|
|
+ //产品利率
|
|
|
+ item.setGrossProfitRate(item.getGrossProfit().divide(item.getAmount(),2,BigDecimal.ROUND_HALF_UP));
|
|
|
//计算单票利润=单票利润+费用应收-费用应付
|
|
|
- item.setSingleTicketMargin(item.getSingleTicketMargin().add(item.getFd()).subtract(item.getFc()));
|
|
|
+ item.setSingleTicketMargin(item.getAmount().add(item.getFd()).subtract(item.getFc()));
|
|
|
});
|
|
|
- profitItemExcelList = JSON.parseArray(JSON.toJSONString(page.getRecords()), ProfitItemExcel.class);
|
|
|
}
|
|
|
ExcelUtil.export(response, "销售利润", "销售利润", profitItemExcelList, ProfitItemExcel.class);
|
|
|
}
|