This commit is contained in:
2025-03-13 10:45:20 +08:00
parent 7307ff2db8
commit 8c0415f250
5 changed files with 90 additions and 14 deletions

View File

@@ -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();
}
/**
* 填充 单价/付款金额
*