diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/enums/TableStateEnum.java b/eladmin-system/src/main/java/cn/ysk/cashier/enums/TableStateEnum.java index 3db2ee31..6fb3613b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/enums/TableStateEnum.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/enums/TableStateEnum.java @@ -2,7 +2,7 @@ package cn.ysk.cashier.enums; public enum TableStateEnum { IDLE("idle"), - CLOSED("closed"), PAYING("paying"), PENDING("pending"), USING("using"); + CLOSED("closed"), PAYING("paying"), PENDING("pending"), USING("using"), CLEANING("cleaning"); private String state = "closed"; TableStateEnum(String state) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopTable.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopTable.java index 6edb698b..b6471ac9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopTable.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopTable.java @@ -23,6 +23,8 @@ import javax.persistence.*; import javax.validation.constraints.*; import java.math.BigDecimal; import java.io.Serializable; +import java.sql.Date; +import java.sql.Timestamp; /** * @website https://eladmin.vip @@ -104,6 +106,23 @@ public class TbShopTable implements Serializable { @ApiModelProperty(value = "二维码") private String qrcode = ""; + @Column(name = "`auto_clear`") + @ApiModelProperty(value = "自动清台") + private Integer autoClear=1; + + @Column(name = "`use_time`") + private Date useTime; + @Column(name = "`end_time`") + private Date endTime; + + @Column(name = "`product_num`") + private Integer productNum; + @Column(name = "`total_amount`") + private Integer totalAmount; + @Column(name = "`real_amount`") + private Integer realAmount; + + public void copy(TbShopTable source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } 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 a3485840..64143ed1 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 @@ -154,12 +154,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else if (tbCashierCartMapper.selectCount(new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, date.getShopId()) .eq(TbCashierCart::getTableId, date.getQrcode()) - .eq(TbCashierCart::getTradeDay, cn.ysk.cashier.utils.DateUtils.getDay()) + .eq(TbCashierCart::getTradeDay, cn.ysk.cashier.utils.DateUtils.getDay()) .eq(TbCashierCart::getStatus, "create")) < 1 || (orderId != null && tbOrderDetailMapper.selectCount(new LambdaQueryWrapper() .eq(TbOrderDetail::getShopId, date.getShopId()) .eq(TbOrderDetail::getStatus, "unpaid") - .ge(TbOrderDetail::getCreateTime, DateUtil.beginOfDay(new Date())) + .ge(TbOrderDetail::getCreateTime, DateUtil.beginOfDay(new Date())) .eq(TbOrderDetail::getOrderId, orderId)) < 1) ) { date.setStatus("idle"); @@ -343,7 +343,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { return 1; } TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaQueryWrapper() - .eq(TbOrderInfo::getUseType, "postPay") + .eq(TbOrderInfo::getUseType, "postPay") .eq(TbOrderInfo::getId, orderId).select(TbOrderInfo::getPlaceNum)); return orderInfo == null ? 1 : orderInfo.getPlaceNum() + 1; } @@ -542,7 +542,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper() .eq(TbOrderDetail::getShopId, removeCartDTO.getShopId()) - .eq(TbOrderDetail::getPlaceNum, cashierCart.getPlaceNum()) + .eq(TbOrderDetail::getPlaceNum, cashierCart.getPlaceNum()) .in(TbOrderDetail::getStatus, "unpaid") .eq(TbOrderDetail::getOrderId, cashierCart.getOrderId())); if (tbOrderDetail == null) { @@ -644,7 +644,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { }); - if (!skuIds.isEmpty()) { List skuList = productSkuRepository.findAllById(skuIds); HashMap skuMap = new HashMap<>(); @@ -1163,8 +1162,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 推送耗材信息 pushConsMsg(orderInfo, cashierCarts); - - if (createOrderDTO.isPostPay() && isPrint) { Long count = orderInfoMapper.selectCount(new LambdaQueryWrapper() .eq(TbOrderInfo::getStatus, "unpaid") @@ -1174,15 +1171,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } + // 设置台桌信息 mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getShopId, createOrderDTO.getShopId()) .eq(TbShopTable::getQrcode, createOrderDTO.getTableId()) + .set(TbShopTable::getUseTime, DateUtil.date()) + .set(TbShopTable::getProductNum, cashierCarts.size()) + .set(TbShopTable::getTotalAmount, orderInfo.getOrderAmount()) + .set(TbShopTable::getRealAmount, orderInfo.getOrderAmount()) .set(TbShopTable::getStatus, TableStateEnum.USING.getState())); String tableCartKey = RedisConstant.getTableCartKey(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString()); redisTemplate.delete(tableCartKey); return orderInfo; - }, stringRedisTemplate, RedisConstant.getLockKey(RedisConstant.CREATE_ORDER,createOrderDTO.getShopId(), + }, stringRedisTemplate, RedisConstant.getLockKey(RedisConstant.CREATE_ORDER, createOrderDTO.getShopId(), createOrderDTO.getTableId(), createOrderDTO.getMasterId(), createOrderDTO.isPostPay())); } @@ -1419,9 +1421,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { rabbitTemplate.convertAndSend(RabbitConstants.EXCHANGE_STOCK_RECORD, RabbitConstants.ROUTING_STOCK_RECORD_SALE, mqData.toJSONString(), new CorrelationData(UUID.randomUUID().toString())); // 修改台桌状态 - mpShopTableMapper.update(null, new LambdaUpdateWrapper() - .eq(TbShopTable::getQrcode, orderInfo.getTableId()) - .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() + .eq(TbShopTable::getShopId, payDTO.getShopId()) + .eq(TbShopTable::getQrcode, orderInfo.getTableId())); + if (tbShopTable.getAutoClear().equals(1)) { + mpShopTableMapper.update(null, new LambdaUpdateWrapper() + .eq(TbShopTable::getQrcode, orderInfo.getTableId()) + .set(TbShopTable::getEndTime, DateUtil.date()) + .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + } else { + mpShopTableMapper.update(null, new LambdaUpdateWrapper() + .eq(TbShopTable::getQrcode, orderInfo.getTableId()) + .set(TbShopTable::getEndTime, DateUtil.date()) + .set(TbShopTable::getStatus, TableStateEnum.CLEANING.getState())); + } if ("postPay".equals(orderInfo.getUseType())) { String day = DateUtils.getDay(); @@ -1572,7 +1585,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setSkuId("-999"); tbCashierCart.setPackFee(BigDecimal.ZERO); tbCashierCartMapper.insert(tbCashierCart); - }else { + } else { tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(BigDecimal.ONE)); tbCashierCart.setNumber(choseCountDTO.getNum()); tbCashierCart.setTotalNumber(choseCountDTO.getNum());