From 0e23f94e8080d4ad261b5dee631d6f0475881360 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Mon, 23 Sep 2024 09:51:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AB=E5=8F=B7=E6=B7=BB=E5=8A=A0=E9=A1=BA?= =?UTF-8?q?=E5=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/app/TbCallServiceImpl.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbCallServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbCallServiceImpl.java index 518f5e1d..12608e30 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbCallServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbCallServiceImpl.java @@ -324,10 +324,47 @@ public class TbCallServiceImpl implements TbCallService { case 3: callQueue.setPassTime(DateUtil.date()); TbShopInfo shopInfo = shopInfoRepository.findById(callQueue.getShopId()).orElse(null); + if (shopInfo == null) { + throw new BadRequestException("店铺信息不存在"); + } + if(StrUtil.isBlank(callQueue.getOpenId()) && callQueue.getSubState() != 1) { break; } + TbCallTable callTable = callTableService.getById(callQueue.getCallTableId()); + Byte isPostpone = callTable.getIsPostpone(); + Integer postponeNum = callTable.getPostponeNum(); + + // 判断是否需要顺延 + if (isPostpone != null && isPostpone == 1 && postponeNum != null && postponeNum > 0) { + // 查询当前桌以及顺延桌数 + List current = callQueueService.lambdaQuery() + .eq(TbCallQueue::getCallTableId, callQueue.getCallTableId()) + .eq(TbCallQueue::getCreateDay, DateUtil.today()) + .eq(TbCallQueue::getShopId, callTable.getShopId()) + .ge(TbCallQueue::getId, callQueue.getId()) + .orderByAsc(TbCallQueue::getCreateTime) + .page(new Page<>(1, postponeNum + 1)) // 获取当前桌和顺延的桌数 + .getRecords(); + + // 确保有足够的桌可以顺延 + if (current.size() > 1) { + // 获取当前桌以及顺延桌 + TbCallQueue currentTable = BeanUtil.copyProperties(current.get(0), TbCallQueue.class); + // 顺延替换信息,将每一张顺延桌向前移动 + for (int i = 0; i < current.size() - 1; i++) { + exchangeCallQueueInfo(current.get(i), current.get(i + 1)); // 当前桌替换为顺延桌 + } + + exchangeCallQueueInfo(current.get(current.size() - 1), currentTable); + callQueue = current.get(current.size() - 1); + + // 更新数据库中的桌号信息 + callQueueService.updateBatchById(current); + } + } + List current = callQueueService.lambdaQuery() .eq(TbCallQueue::getCallTableId, callQueue.getCallTableId()) .eq(TbCallQueue::getCreateDay, DateUtil.today()) @@ -351,6 +388,23 @@ public class TbCallServiceImpl implements TbCallService { return callQueueService.updateById(callQueue); } + private void exchangeCallQueueInfo(TbCallQueue setCallQueue, TbCallQueue copyCallQueue) { + setCallQueue.setOpenId(copyCallQueue.getOpenId()); + setCallQueue.setState(copyCallQueue.getState()); + setCallQueue.setSubState(copyCallQueue.getSubState()); + setCallQueue.setCreateTime(copyCallQueue.getCreateTime()); + setCallQueue.setName(copyCallQueue.getName()); + setCallQueue.setNote(copyCallQueue.getNote()); + setCallQueue.setCallNum(copyCallQueue.getCallNum()); + setCallQueue.setCallTime(copyCallQueue.getCallTime()); + setCallQueue.setCallCount(copyCallQueue.getCallCount()); + setCallQueue.setPassTime(copyCallQueue.getPassTime()); + setCallQueue.setCancelTime(copyCallQueue.getCancelTime()); + setCallQueue.setUserId(copyCallQueue.getUserId()); + setCallQueue.setConfirmTime(copyCallQueue.getConfirmTime()); + + } + @Override public Object get(Integer page, Integer size, Integer shopId, Integer callTableId, Integer state) { LambdaQueryWrapper query = new LambdaQueryWrapper()