fix-经营分析
This commit is contained in:
@@ -330,12 +330,38 @@ public class CarReservationInfoServiceImpl extends ServiceImpl<CarReservationInf
|
||||
item.in(ReservationOrderCashDeskItem::getCashDeskSn, deskSn);
|
||||
List<ReservationOrderCashDeskItem> items = reservationOrderCashDeskItemService.list(item);
|
||||
List<Integer> orderIds = items.stream().map(ReservationOrderCashDeskItem::getOrderId).distinct().collect(Collectors.toList());
|
||||
QueryWrapper<CarReservationInfo> qw = new QueryWrapper<>();
|
||||
qw.select("IFNULL(SUM( CASE WHEN new_accessory_price IS NOT NULL AND new_accessory_price <> 0 THEN new_accessory_price ELSE accessory_price END " +
|
||||
"),0) as new_accessory_price");
|
||||
qw.in("car_reservation_order_id", orderIds);
|
||||
CarReservationInfo info = getOne(qw);
|
||||
return info.getNewAccessoryPrice();
|
||||
//全部配件
|
||||
Map<Integer, Accessory> accList = accessoryService.getListAll(null, merId);
|
||||
if (CollUtil.isEmpty(accList)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
BigDecimal price = BigDecimal.ZERO;
|
||||
//套餐材料
|
||||
List<CarReservationProjectPackageItemAccessory> packageList = carReservationProjectPackageItemAccessoryService.getByOrderIds(orderIds, accList.keySet());
|
||||
for (CarReservationProjectPackageItemAccessory itemAcc : packageList) {
|
||||
Accessory accessory = accList.get(itemAcc.getAccessoryId());
|
||||
if (ObjectUtil.isNull(accessory)) {
|
||||
continue;
|
||||
}
|
||||
//套餐材料无法更换,且一次性领完
|
||||
price = price.add(accessory.getProcurePrice().multiply(new BigDecimal(itemAcc.getNum())));
|
||||
}
|
||||
//非套餐材料
|
||||
List<CarReservationInfoProjectAccessory> projectList = carReservationInfoProjectAccessoryService.getByOrderIds(orderIds, accList.keySet());
|
||||
for (CarReservationInfoProjectAccessory itemAcc : projectList) {
|
||||
Integer accId = itemAcc.getAccessoryId();
|
||||
Integer num = itemAcc.getNum();
|
||||
if (itemAcc.getAccessoryPickId() != 0 && !itemAcc.getAccessoryPickId().equals(itemAcc.getAccessoryId())) {
|
||||
accId = itemAcc.getAccessoryPickId();
|
||||
num = itemAcc.getPickingNum();
|
||||
}
|
||||
Accessory accessory = accList.get(accId);
|
||||
if (ObjectUtil.isNull(accessory)) {
|
||||
continue;
|
||||
}
|
||||
price = price.add(accessory.getProcurePrice().multiply(new BigDecimal(num)));
|
||||
}
|
||||
return price;
|
||||
}
|
||||
|
||||
private BigDecimal getTotalCost(String dateLimit, Integer merId, String type) {
|
||||
|
||||
@@ -3599,7 +3599,7 @@ public class CarReservationOrderServiceImpl extends ServiceImpl<CarReservationOr
|
||||
//同比
|
||||
vo.setYearOnYear(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
//环比
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), lastMonth.get()));
|
||||
vo.setCurrentData(current.get());
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -15,11 +15,9 @@ import com.zbkj.common.constants.CarRepairOrderConstants;
|
||||
import com.zbkj.common.constants.DateConstants;
|
||||
import com.zbkj.common.constants.OrderConstants;
|
||||
import com.zbkj.common.exception.LxkException;
|
||||
import com.zbkj.common.model.accessory.Accessory;
|
||||
import com.zbkj.common.model.admin.SystemAdmin;
|
||||
import com.zbkj.common.model.car.CarReservationInfo;
|
||||
import com.zbkj.common.model.car.CarReservationOrder;
|
||||
import com.zbkj.common.model.car.ReservationOrderCashDesk;
|
||||
import com.zbkj.common.model.car.ReservationOrderCashDeskItem;
|
||||
import com.zbkj.common.model.car.*;
|
||||
import com.zbkj.common.model.dealer.CarDealerRatio;
|
||||
import com.zbkj.common.model.user.UserBrokerageRecord;
|
||||
import com.zbkj.common.request.BusinessAnalysisRequest;
|
||||
@@ -82,6 +80,12 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
private CarDealerRatioService carDealerRatioService;
|
||||
@Autowired
|
||||
private ExecutorService service;
|
||||
@Autowired
|
||||
private AccessoryService accessoryService;
|
||||
@Autowired
|
||||
private CarReservationProjectPackageItemAccessoryService carReservationProjectPackageItemAccessoryService;
|
||||
@Autowired
|
||||
private CarReservationInfoProjectAccessoryService carReservationInfoProjectAccessoryService;
|
||||
|
||||
@Override
|
||||
public Boolean add(ReservationOrderCashDeskRequest request) {
|
||||
@@ -316,7 +320,7 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
//同比
|
||||
vo.setYearOnYear(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
//环比
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), lastMonth.get()));
|
||||
vo.setCurrentData(current.get());
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
@@ -334,18 +338,18 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
BusinessAnalysisVo vo = new BusinessAnalysisVo();
|
||||
|
||||
//统计当前数据
|
||||
CompletableFuture<BigDecimal> current = calculatePrice(request, null);
|
||||
CompletableFuture<BigDecimal> current = profitTask(request, null);
|
||||
//统计上年数据
|
||||
CompletableFuture<BigDecimal> year = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
CompletableFuture<BigDecimal> year = profitTask(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
//统计上个月的数据
|
||||
CompletableFuture<BigDecimal> lastMonth = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
CompletableFuture<BigDecimal> lastMonth = profitTask(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
|
||||
try {
|
||||
CompletableFuture.allOf(current, year, lastMonth).join();
|
||||
//同比
|
||||
vo.setYearOnYear(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
//环比
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), year.get()));
|
||||
vo.setLinkRelativeRatio(LxkUtil.getRateBig(current.get(), lastMonth.get()));
|
||||
vo.setCurrentData(current.get());
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
@@ -354,6 +358,10 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
return vo;
|
||||
}
|
||||
|
||||
private CompletableFuture<BigDecimal> profitTask(BusinessAnalysisRequest request, String dateOffset) {
|
||||
return CompletableFuture.supplyAsync(() -> getTurnover(request.getDateLimit(), request.getMerId(), dateOffset), service);
|
||||
}
|
||||
|
||||
private BigDecimal getTurnover(String dateLimit, Integer merId, String type) {
|
||||
//总营业额
|
||||
LambdaQueryWrapper<ReservationOrderCashDesk> lqw = new LambdaQueryWrapper<>();
|
||||
@@ -383,13 +391,39 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
item.in(ReservationOrderCashDeskItem::getCashDeskSn, deskSn);
|
||||
List<ReservationOrderCashDeskItem> items = reservationOrderCashDeskItemService.list(item);
|
||||
List<Integer> orderIds = items.stream().map(ReservationOrderCashDeskItem::getOrderId).distinct().collect(Collectors.toList());
|
||||
QueryWrapper<CarReservationInfo> qw = new QueryWrapper<>();
|
||||
qw.select("IFNULL(SUM( CASE WHEN new_accessory_price IS NOT NULL AND new_accessory_price <> 0 THEN new_accessory_price ELSE accessory_price END " +
|
||||
"),0) as new_accessory_price");
|
||||
qw.in("car_reservation_order_id", orderIds);
|
||||
CarReservationInfo info = carReservationInfoService.getOne(qw);
|
||||
BigDecimal total = list.stream().map(ReservationOrderCashDesk::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
return total.subtract(info.getNewAccessoryPrice());
|
||||
//全部配件
|
||||
Map<Integer, Accessory> accList = accessoryService.getListAll(null, merId);
|
||||
if (CollUtil.isEmpty(accList)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
BigDecimal price = BigDecimal.ZERO;
|
||||
//套餐材料
|
||||
List<CarReservationProjectPackageItemAccessory> packageList = carReservationProjectPackageItemAccessoryService.getByOrderIds(orderIds, accList.keySet());
|
||||
for (CarReservationProjectPackageItemAccessory itemAcc : packageList) {
|
||||
Accessory accessory = accList.get(itemAcc.getAccessoryId());
|
||||
if (ObjectUtil.isNull(accessory)) {
|
||||
continue;
|
||||
}
|
||||
//套餐材料无法更换,且一次性领完
|
||||
price = price.add(accessory.getProcurePrice().multiply(new BigDecimal(itemAcc.getNum())));
|
||||
}
|
||||
//非套餐材料
|
||||
List<CarReservationInfoProjectAccessory> projectList = carReservationInfoProjectAccessoryService.getByOrderIds(orderIds, accList.keySet());
|
||||
for (CarReservationInfoProjectAccessory itemAcc : projectList) {
|
||||
Integer accId = itemAcc.getAccessoryId();
|
||||
Integer num = itemAcc.getNum();
|
||||
if (itemAcc.getAccessoryPickId() != 0 && !itemAcc.getAccessoryPickId().equals(itemAcc.getAccessoryId())) {
|
||||
accId = itemAcc.getAccessoryPickId();
|
||||
num = itemAcc.getPickingNum();
|
||||
}
|
||||
Accessory accessory = accList.get(accId);
|
||||
if (ObjectUtil.isNull(accessory)) {
|
||||
continue;
|
||||
}
|
||||
price = price.add(accessory.getProcurePrice().multiply(new BigDecimal(num)));
|
||||
}
|
||||
return total.subtract(price);
|
||||
}
|
||||
|
||||
private BigDecimal getPrice(String dateLimit, Integer merId, String type) {
|
||||
|
||||
Reference in New Issue
Block a user