|
|
@@ -68,8 +68,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
BigDecimal stlAmountM = new BigDecimal("0.00");
|
|
|
BigDecimal profitD = new BigDecimal("0.00");
|
|
|
BigDecimal profitM = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsNumberD = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsNumberM = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsAmountD = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsAmountM = new BigDecimal("0.00");
|
|
|
//成本
|
|
|
- BigDecimal cost = new BigDecimal("0.00");
|
|
|
+ BigDecimal costD = new BigDecimal("0.00");
|
|
|
+ BigDecimal costM = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsCostD = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsCostM = new BigDecimal("0.00");
|
|
|
List<PjOrder> pjOrderListD = orderService.list(new LambdaQueryWrapper<PjOrder>()
|
|
|
.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
|
|
|
@@ -78,7 +85,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
|
|
|
"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
|
|
|
" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))")
|
|
|
- .apply("status = '已发货' and busines_date = CURDATE()"));
|
|
|
+ .apply("FIND_IN_SET( status, '已发货,已收货' ) and busines_date = CURDATE()"));
|
|
|
if (!pjOrderListD.isEmpty()) {
|
|
|
List<Long> orderIdsD = pjOrderListD.stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
if (!orderIdsD.isEmpty()) {
|
|
|
@@ -88,12 +95,20 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.in(PjOrderItems::getPid, orderIdsD));
|
|
|
if (!pjOrderItemsListD.isEmpty()) {
|
|
|
salesNumD = pjOrderItemsListD.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ dealAmountD = pjOrderItemsListD.stream().map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsAmountD = pjOrderItemsListD.stream().map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsNumberD = pjOrderItemsListD.stream().map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ costD = pjOrderItemsListD.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsCostD = pjOrderItemsListD.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0)
|
|
|
+ .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
}
|
|
|
}
|
|
|
- dealAmountD = pjOrderListD.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- cost = pjOrderListD.stream().map(PjOrder::getCost).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- stlAmountD = pjOrderListD.stream().filter(e -> ObjectUtils.isNotNull(e.getOldTrxId())).map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- profitD = dealAmountD.subtract(cost);
|
|
|
+ salesNumD = salesNumD.subtract(returnsNumberD);
|
|
|
+ dealAmountD = dealAmountD.subtract(returnsAmountD);
|
|
|
+ costD = costD.subtract(returnsCostD);
|
|
|
+ stlAmountD = pjOrderListD.stream().filter(e -> ObjectUtils.isNotNull(e.getOldTrxId()) && "已发货".equals(e.getStatus())).map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ profitD = dealAmountD.subtract(costD);
|
|
|
}
|
|
|
List<PjOrder> pjOrderListM = orderService.list(new LambdaQueryWrapper<PjOrder>()
|
|
|
.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -103,7 +118,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
|
|
|
"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
|
|
|
" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))")
|
|
|
- .apply("status = '已发货' and DATE_FORMAT(busines_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE(), '%Y-%m')"));
|
|
|
+ .apply("FIND_IN_SET( status, '已发货,已收货' ) and DATE_FORMAT(busines_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE(), '%Y-%m')"));
|
|
|
if (!pjOrderListM.isEmpty()) {
|
|
|
List<Long> orderIdsM = pjOrderListM.stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
if (!orderIdsM.isEmpty()) {
|
|
|
@@ -113,12 +128,20 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.in(PjOrderItems::getPid, orderIdsM));
|
|
|
if (!pjOrderItemsListM.isEmpty()) {
|
|
|
salesNumM = pjOrderItemsListM.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ dealAmountM = pjOrderItemsListM.stream().map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsAmountM = pjOrderItemsListM.stream().map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsNumberM = pjOrderItemsListM.stream().map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ costM = pjOrderItemsListM.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ returnsCostM = pjOrderItemsListM.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0)
|
|
|
+ .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
}
|
|
|
}
|
|
|
- dealAmountM = pjOrderListM.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- cost = pjOrderListM.stream().map(PjOrder::getCost).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- stlAmountM = pjOrderListM.stream().filter(e -> ObjectUtils.isNotNull(e.getOldTrxId())).map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- profitM = dealAmountM.subtract(cost);
|
|
|
+ salesNumM = salesNumM.subtract(returnsNumberM);
|
|
|
+ dealAmountM = dealAmountM.subtract(returnsAmountM);
|
|
|
+ costM = costM.subtract(returnsCostM);
|
|
|
+ stlAmountM = pjOrderListM.stream().filter(e -> ObjectUtils.isNotNull(e.getOldTrxId()) && "已发货".equals(e.getStatus())).map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ profitM = dealAmountM.subtract(costM);
|
|
|
}
|
|
|
map.put("dealAmountD", dealAmountD);
|
|
|
map.put("dealAmountM", dealAmountM);
|
|
|
@@ -324,6 +347,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
if (!pjOrderList.isEmpty()) {
|
|
|
List<Long> ids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
BigDecimal sum = new BigDecimal("0");
|
|
|
+ BigDecimal returnsNumber = new BigDecimal("0");
|
|
|
if (!ids.isEmpty()) {
|
|
|
List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
.in(PjOrderItems::getPid, ids)
|
|
|
@@ -332,7 +356,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
sum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum)
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP);
|
|
|
+ returnsNumber = pjOrderItemsList.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0).map(PjOrderItems::getReturnsNumber)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
+ sum = sum.subtract(returnsNumber);
|
|
|
for (Map<String, Object> map : mapList) {
|
|
|
BigDecimal number = new BigDecimal(map.get("number").toString());
|
|
|
Map<String, Object> map1 = new HashMap<>();
|
|
|
@@ -367,6 +396,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
if (!pjOrderList.isEmpty()) {
|
|
|
List<Long> ids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
BigDecimal sum = new BigDecimal("0");
|
|
|
+ BigDecimal returnsNumber = new BigDecimal("0");
|
|
|
if (!ids.isEmpty()) {
|
|
|
List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
.in(PjOrderItems::getPid, ids)
|
|
|
@@ -375,7 +405,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
sum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum)
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP);
|
|
|
+ returnsNumber = pjOrderItemsList.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0).map(PjOrderItems::getReturnsNumber)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
+ sum = sum.subtract(returnsNumber);
|
|
|
for (Map<String, Object> map : mapList) {
|
|
|
BigDecimal number = new BigDecimal(map.get("number").toString());
|
|
|
Map<String, Object> map1 = new HashMap<>();
|
|
|
@@ -409,6 +444,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
if (!pjOrderList.isEmpty()) {
|
|
|
List<Long> ids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
BigDecimal sum = new BigDecimal("0");
|
|
|
+ BigDecimal returnsNumber = new BigDecimal("0");
|
|
|
if (!ids.isEmpty()) {
|
|
|
List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
.in(PjOrderItems::getPid, ids)
|
|
|
@@ -417,7 +453,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
sum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum)
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP);
|
|
|
+ returnsNumber = pjOrderItemsList.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0).map(PjOrderItems::getReturnsNumber)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
+ sum = sum.subtract(returnsNumber);
|
|
|
List<String> goodsSize = new ArrayList<>();
|
|
|
goodsSize.add("<=15");
|
|
|
goodsSize.add("=16");
|
|
|
@@ -457,7 +498,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.apply("status = '已发货'"));
|
|
|
//销售
|
|
|
BigDecimal income = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsIncome = new BigDecimal("0.00");
|
|
|
BigDecimal amount = new BigDecimal("0.00");
|
|
|
+ BigDecimal returnsAmount = new BigDecimal("0.00");
|
|
|
//平均客单价
|
|
|
BigDecimal averageAmount = new BigDecimal("0.00");
|
|
|
//客户数量
|
|
|
@@ -472,14 +515,24 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
income = pjOrderItemsList.stream().map(PjOrderItems::getSendNum)
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP);
|
|
|
+ returnsIncome = pjOrderItemsList.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsNumber()) != 0).map(PjOrderItems::getReturnsNumber)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
amount = pjOrderItemsList.stream().map(PjOrderItems::getTotalAmount)
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.setScale(0, RoundingMode.HALF_UP);
|
|
|
+ returnsAmount = pjOrderItemsList.stream().filter(e -> ObjectUtils.isNotNull(e.getReturnsNumber())
|
|
|
+ && new BigDecimal("0").compareTo(e.getReturnsAmount()) != 0).map(PjOrderItems::getReturnsNumber)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(0, RoundingMode.HALF_UP);
|
|
|
+ amount = amount.subtract(returnsAmount);
|
|
|
long sum = pjOrderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).distinct().count();
|
|
|
corpsNumber = corpsNumber.add(new BigDecimal(sum));
|
|
|
averageAmount = averageAmount.add(amount.divide(new BigDecimal(pjOrderList.size()), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
}
|
|
|
+ income = income.subtract(returnsIncome);
|
|
|
map.put("income", income);
|
|
|
map.put("averageAmount", averageAmount);
|
|
|
map.put("corpsNumber", corpsNumber);
|
|
|
@@ -720,60 +773,82 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
item.setSalesQuantity(new BigDecimal("0"));
|
|
|
item.setSalesProfit(new BigDecimal("0.00"));
|
|
|
if ("1".equals(saleDetailDto.getBsType())) {
|
|
|
- List<Long> ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersCorpR = new ArrayList<>();
|
|
|
+ List<Long> ordersCorpS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())){
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())&& e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())&& e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersCorpR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersCorpR = ordersCorpR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
if (!ordersCorpS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersCorpS = ordersCorpS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|
|
|
}
|
|
|
} else {
|
|
|
- List<Long> ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersSalerR = new ArrayList<>();
|
|
|
+ List<Long> ordersSalerS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())){
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersSalerR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersSalerR = ordersSalerR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
if (!ordersSalerS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersSalerS = ordersSalerS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|
|
|
@@ -814,102 +889,124 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.in(PjOrderItems::getPid, pids));
|
|
|
} else {
|
|
|
- map.put("salesAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("salesAmount", new BigDecimal("0"));
|
|
|
map.put("salesQuantity", new BigDecimal("0"));
|
|
|
- map.put("returnAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("returnAmount", new BigDecimal("0"));
|
|
|
map.put("returnQuantity", new BigDecimal("0"));
|
|
|
- map.put("salesProfit", new BigDecimal("0.00"));
|
|
|
+ map.put("salesProfit", new BigDecimal("0"));
|
|
|
return R.data(map);
|
|
|
}
|
|
|
if (pjOrderItemsList.isEmpty()) {
|
|
|
- map.put("salesAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("salesAmount", new BigDecimal("0"));
|
|
|
map.put("salesQuantity", new BigDecimal("0"));
|
|
|
- map.put("returnAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("returnAmount", new BigDecimal("0"));
|
|
|
map.put("returnQuantity", new BigDecimal("0"));
|
|
|
- map.put("salesProfit", new BigDecimal("0.00"));
|
|
|
+ map.put("salesProfit", new BigDecimal("0"));
|
|
|
return R.data(map);
|
|
|
}
|
|
|
for (SalespersonCustomer item : customerIPage) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00"));
|
|
|
+ item.setReturnAmount(new BigDecimal("0"));
|
|
|
item.setReturnQuantity(new BigDecimal("0"));
|
|
|
- item.setSalesAmount(new BigDecimal("0.00"));
|
|
|
+ item.setSalesAmount(new BigDecimal("0"));
|
|
|
item.setSalesQuantity(new BigDecimal("0"));
|
|
|
- item.setSalesProfit(new BigDecimal("0.00"));
|
|
|
+ item.setSalesProfit(new BigDecimal("0"));
|
|
|
if ("1".equals(saleDetailDto.getBsType())) {
|
|
|
- List<Long> ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersCorpR = new ArrayList<>();
|
|
|
+ List<Long> ordersCorpS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())){
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersCorpR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersCorpR = ordersCorpR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(0, RoundingMode.HALF_UP));
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(0, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
if (!ordersCorpS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
+ List<Long> finalOrdersCorpS = ordersCorpS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
- .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|
|
|
}
|
|
|
} else {
|
|
|
- List<Long> ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersSalerR = new ArrayList<>();
|
|
|
+ List<Long> ordersSalerS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())){
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersSalerR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersSalerR = ordersSalerR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(0, RoundingMode.HALF_UP));
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(0, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
if (!ordersSalerS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
- .map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
+ List<Long> finalOrdersSalerS = ordersSalerS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
+ .map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
- .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ .map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (!customerIPage.isEmpty()) {
|
|
|
- map.put("salesAmount", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ map.put("salesAmount", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP));
|
|
|
map.put("salesQuantity", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getSalesQuantity).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP));
|
|
|
- map.put("returnAmount", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getReturnAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ map.put("returnAmount", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getReturnAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP));
|
|
|
map.put("returnQuantity", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getReturnQuantity).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP));
|
|
|
- map.put("salesProfit", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getSalesProfit).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ map.put("salesProfit", customerIPage.stream().filter(Objects::nonNull).map(SalespersonCustomer::getSalesProfit).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP));
|
|
|
} else {
|
|
|
- map.put("salesAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("salesAmount", new BigDecimal("0"));
|
|
|
map.put("salesQuantity", new BigDecimal("0"));
|
|
|
- map.put("returnAmount", new BigDecimal("0.00"));
|
|
|
+ map.put("returnAmount", new BigDecimal("0"));
|
|
|
map.put("returnQuantity", new BigDecimal("0"));
|
|
|
- map.put("salesProfit", new BigDecimal("0.00"));
|
|
|
+ map.put("salesProfit", new BigDecimal("0"));
|
|
|
}
|
|
|
return R.data(map);
|
|
|
}
|
|
|
@@ -955,61 +1052,83 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
item.setSalesQuantity(new BigDecimal("0"));
|
|
|
item.setSalesProfit(new BigDecimal("0.00"));
|
|
|
if ("1".equals(saleDetailDto.getBsType())) {
|
|
|
- List<Long> ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersCorpR = new ArrayList<>();
|
|
|
+ List<Long> ordersCorpS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())){
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersCorpR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersCorpR = ordersCorpR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersCorpR.contains(e.getPid()))
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersCorpR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
if (!ordersCorpS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersCorpS = ordersCorpS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersCorpS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|
|
|
}
|
|
|
} else {
|
|
|
- List<Long> ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
- List<Long> ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
- && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<Long> ordersSalerR = new ArrayList<>();
|
|
|
+ List<Long> ordersSalerS = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())){
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())&& e.getCustomerName().equals(saleDetailDto.getCustomerName())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
|
|
|
+ && !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
if (!ordersSalerR.isEmpty()) {
|
|
|
- item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersSalerR = ordersSalerR;
|
|
|
+ item.setReturnAmount(new BigDecimal("0.00").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
- item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> ordersSalerR.contains(e.getPid()))
|
|
|
+ item.setReturnQuantity(new BigDecimal("0").subtract(pjOrderItemsList.stream().filter(e -> finalOrdersSalerR.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
if (!ordersSalerS.isEmpty()) {
|
|
|
- BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ List<Long> finalOrdersSalerS = ordersSalerS;
|
|
|
+ BigDecimal subTotalMoney = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal goodsNum = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsNumber = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()))
|
|
|
+ BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
|
|
|
.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
|
|
|
item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
|
|
|
item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
|
|
|
item.setSalesQuantity(goodsNum.subtract(returnsNumber));
|
|
|
- BigDecimal costprie = pjOrderItemsList.stream().filter(e -> ordersSalerS.contains(e.getPid()) &&
|
|
|
+ BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()) &&
|
|
|
(ObjectUtils.isNull(e.getReturnsNumber()) || new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0))
|
|
|
.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
item.setSalesProfit(item.getSalesAmount().subtract(costprie));
|