|
|
@@ -4800,7 +4800,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
saleDetailDto.setSalesCompanyId(user.getDeptId());
|
|
|
saleDetailDto.setBusinesDateStart(startDate);
|
|
|
saleDetailDto.setBusinesDateEnd(endDate);
|
|
|
- saleDetailDto.setIsContain("1");
|
|
|
+ saleDetailDto.setIsContain("0");
|
|
|
saleDetailDto.setBsType("XS,TKXS");
|
|
|
if (!userRoles.contains("admin") && !userRoles.contains("老板") && userRoles.contains("业务员")) {
|
|
|
saleDetailDto.setSalerName(String.valueOf(user.getUserId()));
|
|
|
@@ -4908,11 +4908,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
BigDecimal costprieCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
|
|
|
.map(SaleDetailDto::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP).abs();
|
|
|
+ // 已取消的毛利
|
|
|
+ BigDecimal profitCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
|
|
|
+ .map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP).abs();
|
|
|
+ // 毛利
|
|
|
+ BigDecimal profitActual = saleDetailDtoList.stream().filter(e -> !OrderStatusEnum.CANCELLED.value.equals(e.getStatus()) && !OrderStatusEnum.COMPLETED.value.equals(e.getStatus()))
|
|
|
+ .map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
+
|
|
|
+ // 退货金额
|
|
|
+ BigDecimal subTotalMoneyReturns = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.COMPLETED.value.equals(e.getStatus()))
|
|
|
+ .map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP).abs();
|
|
|
+ // 退货成本金额
|
|
|
+ BigDecimal costprieReturns = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.COMPLETED.value.equals(e.getStatus()))
|
|
|
+ .map(SaleDetailDto::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP).abs();
|
|
|
+ // 退货毛利金额
|
|
|
+ BigDecimal profitReturns = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.COMPLETED.value.equals(e.getStatus()))
|
|
|
+ .map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP).abs();
|
|
|
+
|
|
|
|
|
|
long xsCount = saleDetailDtoList.stream().filter(e -> !OrderStatusEnum.COMPLETED.value.equals(e.getStatus()) && e.getBsType().equals("销售")).count();
|
|
|
appStatisticsVo.setIncome(subTotalMoneyActual.abs().add(subTotalMoneyCancel));
|
|
|
appStatisticsVo.setCost(costprieActual.abs().add(costprieCancel));
|
|
|
- appStatisticsVo.setProfit(appStatisticsVo.getIncome().subtract(appStatisticsVo.getCost()));
|
|
|
+ appStatisticsVo.setProfit(profitActual.abs().add(profitCancel));
|
|
|
+ appStatisticsVo.setIncome(appStatisticsVo.getIncome().subtract(subTotalMoneyCancel.add(subTotalMoneyReturns)));
|
|
|
+ appStatisticsVo.setCost(appStatisticsVo.getCost().subtract(costprieCancel.add(costprieReturns)));
|
|
|
+ appStatisticsVo.setProfit(appStatisticsVo.getProfit().subtract(profitCancel.add(profitReturns)));
|
|
|
appStatisticsVo.setAverageAmount(appStatisticsVo.getIncome().divide(new BigDecimal(xsCount), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
appStatisticsVo.setExpenditure(expenditure == null ? BigDecimal.ZERO : expenditure.setScale(0, RoundingMode.DOWN));
|
|
|
return R.data(appStatisticsVo);
|
|
|
@@ -4937,6 +4962,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
return orderMapper.getPendingPaymentSum(AuthUtil.getTenantId());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R<BigDecimal> getExpenditurePrice(PjOrder order) {
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ SaleDetail saleDetail = new SaleDetail();
|
|
|
+ saleDetail.setTenantId(bladeUser.getTenantId());
|
|
|
+ String userRoles = AuthUtil.getUserRole();
|
|
|
+ saleDetail.setSalesCompanyId(bladeUser.getDeptId());
|
|
|
+ if (!userRoles.contains("admin") && !userRoles.contains("老板") && userRoles.contains("业务员")) {
|
|
|
+ saleDetail.setSalerName(String.valueOf(bladeUser.getUserId()));
|
|
|
+ }
|
|
|
+ if (!org.springframework.util.CollectionUtils.isEmpty(order.getBusinesDateList()) && order.getBusinesDateList().size() > 1) {
|
|
|
+ saleDetail.setBusinesDateStart(order.getBusinesDateList().get(0));
|
|
|
+ saleDetail.setBusinesDateEnd(order.getBusinesDateList().get(1));
|
|
|
+ } else {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ YearMonth currentMonth = YearMonth.now();
|
|
|
+ LocalDate firstDay = currentMonth.atDay(1);
|
|
|
+ LocalDate lastDay = currentMonth.atEndOfMonth();
|
|
|
+ saleDetail.setBusinesDateStart(firstDay.format(formatter));
|
|
|
+ saleDetail.setBusinesDateEnd(lastDay.format(formatter));
|
|
|
+ }
|
|
|
+ return R.data(orderMapper.expenditureSum(saleDetail));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存订单信息
|
|
|
*/
|