diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 80486574..251c57d3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -262,14 +262,35 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpShopTableService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(criteria.getPage(), criteria.getSize()), query); List tbShopTableList = shopTablePage.getRecords(); ArrayList> infoList = new ArrayList<>(); + + List cartList = tbCashierCartMapper.selectList(new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, criteria.getShopId()) +// .eq(TbCashierCart::getTableId, date.getQrcode()) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) + .eq(TbCashierCart::getStatus, "create")); + + HashMap countMap = new HashMap<>(); + cartList.forEach(item -> { + Integer count = countMap.computeIfAbsent(item.getTableId(), k -> 1); + countMap.put(item.getTableId(), count + 1); + }); + + HashMap currentOrderInfoMap = new HashMap<>(); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(criteria.getShopId(), "2232"); + List orderInfoList = orderInfoMapper.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(1, 1), new LambdaQueryWrapper() + .eq(TbOrderInfo::getStatus, "unpaid") + .eq(TbOrderInfo::getUseType, shopEatTypeInfoDTO.getUseType()) + .eq(TbOrderInfo::getShopId, shopEatTypeInfoDTO.getShopId()) +// .eq(TbOrderInfo::getTableId, eatTypeInfoDTO.getTableId()) + .gt(TbOrderInfo::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) +// .eq(TbOrderInfo::getTradeDay, DateUtils.getDay()) + .orderByDesc(TbOrderInfo::getId)).getRecords(); + orderInfoList.forEach(item -> currentOrderInfoMap.computeIfAbsent(item.getTableId(), k -> item)); + for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { date.setStatus("unbind"); - } else if (tbCashierCartMapper.selectCount(new LambdaQueryWrapper() - .eq(TbCashierCart::getShopId, date.getShopId()) - .eq(TbCashierCart::getTableId, date.getQrcode()) - .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) - .eq(TbCashierCart::getStatus, "create")) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus()) + } else if (countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus()) ) { date.setStatus("idle"); mpShopTableMapper.update(null, new LambdaUpdateWrapper() @@ -290,9 +311,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbOrderInfo orderInfo = null; if (StrUtil.isNotBlank(date.getQrcode())) { try { - - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(criteria.getShopId(), date.getQrcode()); - orderInfo = getCurrentOrder(shopEatTypeInfoDTO); + orderInfo = currentOrderInfoMap.get(date.getQrcode()); } catch (Exception e) { log.info(e.getMessage()); } @@ -1194,17 +1213,17 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId()); if (couponVo != null && couponVo.getCurrentUseNum() > 0) { BigDecimal currentUseNum; - if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) { - cashierCart.setUserCouponId(couponVo.getId()); - discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); - couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); - } List tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>()); tbUserCouponVos.add(couponVo); TbCashierCart balanceCart = null; - // 优惠券数量小于购物车数量,分割购物车数据 - if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { + if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) { + cashierCart.setUserCouponId(couponVo.getId()); + discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); + couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); + currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); + // 优惠券数量小于购物车数量,分割购物车数据 + }else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum()); BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber()); int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum(); @@ -1216,7 +1235,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { cashierCart.setTotalNumber(couponVo.getCurrentUseNum()); cashierCart.setUserCouponId(couponVo.getId()); discountAmount = discountAmount.add(totalAmountByNum); - couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); + couponVo.setCurrentUseNum(couponVo.getCurrentUseNum()); + currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); + // 创建结余购物车 @@ -1227,11 +1248,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { balanceCart.setNumber(balanceNum); balanceCart.setTotalNumber(balanceNum); balanceCart.setPackFee(singlePackFee.multiply(num)); - balanceCart.setTotalAmount(cashierCart.getSalePrice().multiply(num).add(balanceCart.getPackFee())); + balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num))); balanceCartList.add(balanceCart); } else { currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); - discountAmount = discountAmount.add(cashierCart.getTotalAmount().divide(BigDecimal.valueOf(cashierCart.getTotalNumber()), RoundingMode.HALF_UP).multiply(currentUseNum)); + discountAmount = discountAmount.add(cashierCart.getTotalAmount()); cashierCart.setUserCouponId(couponVo.getId()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); }