转台
This commit is contained in:
@@ -360,6 +360,54 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CzgResult<Object> mergeOrder(MergeOrderDTO param) {
|
||||
if (param.getTargetOrderId() == null && StrUtil.isBlank(param.getTargetTableCode())) {
|
||||
throw new ValidateException("转台失败,请选择目标台桌后转台");
|
||||
}
|
||||
OrderInfo sourceOrder = getById(param.getSourceOrderId());
|
||||
if (sourceOrder == null || !sourceOrder.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
|
||||
throw new ValidateException("转台失败,无可转订单");
|
||||
}
|
||||
OrderInfo targetOrder = queryChain()
|
||||
.eq(OrderInfo::getId, param.getTargetOrderId())
|
||||
.eq(OrderInfo::getTableCode, param.getTargetTableCode())
|
||||
.eq(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode())
|
||||
.one();
|
||||
if (targetOrder == null) {
|
||||
OrderInfoAddDTO addDTO = new OrderInfoAddDTO();
|
||||
addDTO.setShopId(sourceOrder.getShopId());
|
||||
addDTO.setStaffId(sourceOrder.getStaffId());
|
||||
addDTO.setTableCode(param.getTargetTableCode());
|
||||
addDTO.setOrderType(sourceOrder.getOrderType());
|
||||
addDTO.setPlatformType(sourceOrder.getPlatformType());
|
||||
addDTO.setPayMode(sourceOrder.getPayMode());
|
||||
addDTO.setDineMode("dine-in");
|
||||
addDTO.setPlaceNum(1);
|
||||
addDTO.setWaitCall(false);
|
||||
addDTO.setVipPrice(false);
|
||||
ShopInfo shopInfo = shopInfoService.getById(sourceOrder.getShopId());
|
||||
targetOrder = initOrderInfo(addDTO, shopInfo, null);
|
||||
}
|
||||
if (CollUtil.isEmpty(param.getDetailIds())) {
|
||||
long count = orderDetailService.queryChain().eq(OrderDetail::getOrderId, sourceOrder.getId()).count();
|
||||
if (count < 1) {
|
||||
throw new ValidateException("转台失败,该订单无可转商品");
|
||||
}
|
||||
orderDetailService.updateChain()
|
||||
.eq(OrderDetail::getOrderId, sourceOrder.getId())
|
||||
.set(OrderDetail::getOrderId, targetOrder.getId())
|
||||
.update();
|
||||
} else {
|
||||
orderDetailService.updateChain()
|
||||
.eq(OrderDetail::getOrderId, sourceOrder.getId())
|
||||
.in(OrderDetail::getId, param.getDetailIds())
|
||||
.set(OrderDetail::getOrderId, targetOrder.getId())
|
||||
.update();
|
||||
}
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充 单价/付款金额
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user