diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index 16a9aa7..34b26d4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -111,7 +111,7 @@ public class OrderController { String userId = jsonObject.getString("accountId"); orderVo.setMerchantId(Integer.valueOf(userId)); orderVo.setUserId(jsonObject.getString("staffId")); - return orderService.createOrder(orderVo,clientType,token); + return orderService.createOrder(orderVo,clientType,token, null, true); } @PostMapping("/createBackOrder") public Result createBackOrder(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, @@ -151,7 +151,9 @@ public class OrderController { public Result orderDetail(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, @RequestHeader("clientType") String clientType, @RequestParam("shopId") Integer shopId, @RequestParam("id") Integer id){ - return orderService.orderDetail(shopId,id); + JSONObject jsonObject = TokenUtil.parseParamFromToken(token); + String userId = jsonObject.getString("accountId"); + return orderService.orderDetail(shopId,id, clientType, token, userId, jsonObject.getString("staffId")); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbCashierCartMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbCashierCartMapper.java index b118496..15099b3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbCashierCartMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbCashierCartMapper.java @@ -72,4 +72,7 @@ public interface TbCashierCartMapper { @Delete("delete from tb_cashier_cart where master_id=#{masterId} and id=#{cartId}") int deleteByCartId(@Param("masterId") String masterId, @Param("cartId")Integer cartId); + + @Select("select count(*) from tb_cashier_cart where shop_id=#{shopId} and `status`='create' and table_id=#{qrcode}") + int countTable(@Param("qrcode") String qrcode, @Param("shopId") Integer shopId); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java index 247e7ce..1c11095 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -55,6 +55,7 @@ public class PrintMechineConsumer { public void listener(String message) { String orderId = message; + log.info("接收到打印mq消息: {}", message); try { @@ -187,7 +188,10 @@ public class PrintMechineConsumer { return; } - + if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") + && (!orderInfo.getStatus().equals("closed"))) { + return; + } List tbOrderDetails=tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if(ObjectUtil.isNotEmpty(tbOrderDetails)&&tbOrderDetails.size()>0) { List detailList = new ArrayList<>(); @@ -219,25 +223,30 @@ public class PrintMechineConsumer { } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark()); -// OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - detailPO.setOutNumber(orderInfo.getOutNumber()); - String printType = "结算单"; - String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") - && (!orderInfo.getStatus().equals("closed"))) { - return; + String message = redisUtils.getMessage("IS_PRINT:" + orderInfo.getId()); + if (message == null) { + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark()); +// OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); + detailPO.setOutNumber(orderInfo.getOutNumber()); + String printType = "结算单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + + PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + redisUtils.saveMessage("IS_PRINT:" + orderInfo.getId(), "1"); } - PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); } } break; case "one": //一菜一品 - + if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") + && (!orderInfo.getStatus().equals("unpaid"))) { + return; + } if("return".equals(orderInfo.getOrderType())){ List details= tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if(ObjectUtil.isNotEmpty(details)&&details.size()>0){ @@ -257,10 +266,6 @@ public class PrintMechineConsumer { } String data = PrinterUtils.getPrintData("return",orderInfo.getPayType().equals("wx_lite")?orderInfo.getTableName():orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum(), remark); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; - if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") - && (!orderInfo.getStatus().equals("unpaid"))) { - return; - } PrinterUtils.printTickets(voiceJson,3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); } }); @@ -272,7 +277,7 @@ public class PrintMechineConsumer { tbOrderDetails.parallelStream().forEach(it -> { // 已经打印过的菜品不再打印 - if ("postPay".equals(orderInfo.getUseType()) && isPrint(it)) { + if ("postPay".equals(orderInfo.getUseType()) && isPrint(it, orderInfo.getId())) { return; } String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); @@ -312,8 +317,8 @@ public class PrintMechineConsumer { * 判断商品是否已打票 * @return true 已打 false 未打 */ - private boolean isPrint(TbOrderDetail orderDetail) { - String key = RedisCst.ORDER_PRINT + orderDetail.getProductId() + ":" + orderDetail.getProductSkuId(); + private boolean isPrint(TbOrderDetail orderDetail, Integer orderId) { + String key = RedisCst.ORDER_PRINT + orderId + ":" + orderDetail.getProductId() + ":" + orderDetail.getProductSkuId(); String info = redisUtils.getMessage(key); redisUtils.saveMessage(key, String.valueOf(orderDetail.getNum()), 60 * 60 * 24); if (info == null) { @@ -468,6 +473,10 @@ public class PrintMechineConsumer { break; case "one": //一菜一品 + if (!orderInfo.getStatus().equals("unpaid")) { + return; + } + cashierCarts = tbCashierCartMapper.selectByOrderId(orderId,"final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { @@ -491,6 +500,9 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + + + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(),orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark); } }); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index d8793cb..6babf52 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -149,6 +149,11 @@ public class OrderService { } } + TbCashierCart cart = cashierCartMapper.selectByPrimaryKey(cartId); + if (cart != null && cart.getNumber() < number && StrUtil.isNotBlank(cart.getOrderId()) && StrUtil.isNotBlank(cart.getTableId())) { + return Result.fail("此商品已经出餐不支持减少操作"); + } + // List proskuConList= tbProskuConMapper.selectByShopIdAndSkuIdAndProductId(skuId,shopInfo.getId(),product.getId()); // if(Objects.nonNull(proskuConList)&&proskuConList.size()>0){ // for (TbProskuCon proskuCon : proskuConList) { @@ -200,7 +205,6 @@ public class OrderService { masterId = "#" + String.format("%03d", 1); } } - TbCashierCart cart = cashierCartMapper.selectByPrimaryKey(cartId); if (Objects.nonNull(cart)) { //查询现有规格商品 @@ -258,6 +262,7 @@ public class OrderService { cashierCart.setStatus("create"); cashierCart.setIsPack(isPack); cashierCart.setIsGift(isGift); + cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); if (isGift.equals("false")) { cashierCart.setTotalAmount(new BigDecimal(number).multiply(skuWithBLOBs.getSalePrice())); } else { @@ -374,7 +379,9 @@ public class OrderService { .and(query -> { query.eq(TbCashierCart::getMasterId, finalMasterId) .or() - .isNull(TbCashierCart::getMasterId); + .isNull(TbCashierCart::getMasterId) + .or() + .eq(TbCashierCart::getMasterId, ""); }); } @@ -448,7 +455,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, map); } - @Transactional(rollbackFor = Exception.class) +// @Transactional(rollbackFor = Exception.class) public Result delCart(String masterId, Integer cartId) { @@ -481,13 +488,36 @@ public class OrderService { List skuIds=new ArrayList<>(); skuIds.add(cashierCart.getSkuId()); - cashierCartMapper.deleteByCartId(masterId, cartId); + cashierCartMapper.deleteByPrimaryKey(cartId); + if (cashierCart.getOrderId() != null) { + int list = mpCashierCartMapper.selectCount( new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, cashierCart.getShopId()) + .eq(TbCashierCart::getStatus, "create").eq(TbCashierCart::getTableId, cashierCart.getTableId()) + .and(query2 -> { + query2.or(query3 -> { + query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) + .eq(TbCashierCart::getMasterId, cashierCart.getMasterId()); + }) + .or((query4 -> { + query4.isNull(TbCashierCart::getTradeDay) + .or() + .eq(TbCashierCart::getMasterId, "") + .or() + .eq(TbCashierCart::getMasterId, ""); + })); + })); + + if (list == 0) { + tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cashierCart.getOrderId())); + } + + } return Result.success(CodeEnum.SUCCESS); } @Transactional(rollbackFor = Exception.class) - public Result createOrder(OrderVo orderVo, String clientType, String token) { + public Result createOrder(OrderVo orderVo, String clientType, String token, Integer oldOrderId, boolean isPrint) { String day = DateUtils.getDay(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() @@ -513,6 +543,9 @@ public class OrderService { }) .or((query4 -> { query4.isNull(TbCashierCart::getTradeDay) + .or() + .eq(TbCashierCart::getMasterId, "") + .or() .eq(TbCashierCart::getMasterId, ""); })); }); @@ -526,6 +559,16 @@ public class OrderService { } if(ObjectUtil.isEmpty(list)||ObjectUtil.isNull(list)||list.size()<=0){ + if (oldOrderId != null) { + orderDetailMapper.deleteByOUrderId(oldOrderId); + TbOrderInfo orderInfo = new TbOrderInfo(); + orderInfo.setId(oldOrderId); + orderInfo.setOrderAmount(BigDecimal.ZERO); + orderInfo.setDiscountAmount(BigDecimal.ZERO); + orderInfo.setStatus("cancelled"); + tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); +// tbOrderInfoMapper.deleteByPrimaryKey(oldOrderId); + } return Result.fail(CARTEXIST); } BigDecimal totalAmount = BigDecimal.ZERO; @@ -600,7 +643,7 @@ public class OrderService { orderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, "", "table", "cash", orderVo.getMerchantId().toString(), orderVo.getShopId().toString(), "", (byte) 1, day, masterId); - orderInfo.setMasterId(masterId); + orderInfo.setMasterId(orderVo.getMasterId()); orderInfo.setRemark(orderVo.getRemark()); orderInfo.setUserId(orderVo.getUserId()); orderInfo.setUseType(StrUtil.isNotBlank(orderVo.getTableId()) ? "postPay" : "afterPay"); @@ -637,9 +680,7 @@ public class OrderService { redisUtil.saveMessage(RedisCst.OUT_NUMBER.concat(orderInfo.getShopId()),object.toString()); orderId = orderInfo.getId(); - if (StrUtil.isNotBlank(orderVo.getTableId())) { - producer.printMechine(String.valueOf(orderId)); - } + } for (TbOrderDetail orderDetail : orderDetails) { orderDetail.setOrderId(orderId); @@ -685,11 +726,13 @@ public class OrderService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.USING.getState())); - producer.printMechine(String.valueOf(orderInfo.getId())); } } if (!StrUtil.isBlank(orderVo.getTableId())) { + if (isPrint) { + producer.printMechine(String.valueOf(orderId)); + } mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.USING.getState())); @@ -1025,21 +1068,26 @@ public class OrderService { String day = DateUtils.getDay(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, cartVo.getShopId()) - .eq(TbCashierCart::getTradeDay, day) .eq(TbCashierCart::getStatus, "create"); - // 普通点单 if (StrUtil.isBlank(cartVo.getTableId())) { - queryWrapper.eq(TbCashierCart::getMasterId, cartVo.getMasterId()); - queryWrapper.isNull(TbCashierCart::getTableId); + queryWrapper.eq(TbCashierCart::getMasterId, cartVo.getMasterId()) + .eq(TbCashierCart::getTradeDay, day) + .and(query -> { + query.isNull(TbCashierCart::getTableId) + .or() + .eq(TbCashierCart::getTableId, ""); + }); // 台桌点单 }else if (StrUtil.isNotBlank(cartVo.getTableId()) ) { queryWrapper.eq(TbCashierCart::getTableId, cartVo.getTableId()) .and(query -> { query.eq(TbCashierCart::getMasterId, cartVo.getMasterId()) .or() - .isNull(TbCashierCart::getMasterId); + .isNull(TbCashierCart::getMasterId) + .or() + .eq(TbCashierCart::getMasterId, ""); }); // 会员点单 } @@ -1049,7 +1097,12 @@ public class OrderService { int orderId = 0; List productSkuPos = new ArrayList<>(); List skuIds = new ArrayList<>(); + ArrayList ids = new ArrayList<>(); for (TbCashierCart cashierCart : list) { + if (StrUtil.isNotBlank(cashierCart.getOrderId()) && StrUtil.isNotBlank(cashierCart.getTableId())) { + continue; + } + ids.add(cashierCart.getId()); // 数量减少, 返还库存 String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); @@ -1082,17 +1135,25 @@ public class OrderService { TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId); if (Objects.nonNull(orderInfo) && !orderInfo.getStatus().equals("pending")){ tbOrderInfoMapper.updateStatusById(orderId, "cancelled"); - orderDetailMapper.updateStatusByOrderId(orderId, "cancelled"); +// orderDetailMapper.updateStatusByOrderId(orderId, "cancelled"); + orderDetailMapper.deleteByOUrderId(orderId); } } + + if (!ids.isEmpty()) { + mpCashierCartMapper.deleteBatchIds(ids); + } +// cashierCartMapper.deleteByPrimaryKey() cashierCartMapper.deleteBymasterId(cartVo.getMasterId(), Integer.valueOf(cartVo.getShopId()), day, "create", cartVo.getUuid()); // if(ObjectUtil.isNotEmpty(productSkuPos)&&productSkuPos.size()>0){ // tbProductSkuMapper.batchStockNum(productSkuPos); // } - + mpShopTableMapper.update(null, new LambdaUpdateWrapper() + .eq(TbShopTable::getQrcode, cartVo.getTableId()) + .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); return Result.success(CodeEnum.SUCCESS); } @@ -1152,8 +1213,18 @@ public class OrderService { @Autowired TbShopUserMapper tbShopUserMapper; - public Result orderDetail(Integer shopId, Integer id) { + public Result orderDetail(Integer shopId, Integer id, String clientType, String token, String userId, String staffId) { + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(id); + + OrderVo orderVo = new OrderVo(); + orderVo.setMasterId(orderInfo.getMasterId()); + orderVo.setShopId(Integer.valueOf(orderInfo.getShopId())); + orderVo.setTableId(orderInfo.getTableId()); + orderVo.setMerchantId(Integer.valueOf(userId)); + createOrder(orderVo, clientType, token, id, false); + orderInfo = tbOrderInfoMapper.selectByPrimaryKey(id); + if (Objects.nonNull(orderInfo)) { List list = orderDetailMapper.selectAllByOrderId(id); orderInfo.setDetailList(list); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index e4d9984..01d6c8f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.service; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -304,7 +305,10 @@ public class PayService { .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); - + // 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(orderId); + } return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data")); } else { String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null; @@ -322,7 +326,10 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); - +// 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(orderId); + } return Result.success(CodeEnum.PAYING); } @@ -378,7 +385,10 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); - +// 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(orderId); + } return Result.success(CodeEnum.SUCCESS, mainScanResp); } else if ("TRADE_AWAIT".equals(mainScanResp.getState())) { @@ -393,7 +403,10 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); - +// 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(orderId); + } return Result.success(CodeEnum.PAYING); } @@ -789,13 +802,13 @@ public class PayService { return Result.fail("用户不存在或已被禁用"); } - long flag = mpShopUserMapper.decrBalance(vipUserId, orderInfo.getOrderAmount()); + long flag = mpShopUserMapper.decrBalance(vipUserId, (payAmount != null && discountAmount != null) ? payAmount : orderInfo.getOrderAmount()); if (flag < 1) { return Result.fail("余额不足或扣除余额失败"); } TbShopUserFlow userFlow = new TbShopUserFlow(); - userFlow.setAmount(orderInfo.getOrderAmount()); + userFlow.setAmount((payAmount != null && discountAmount != null) ? payAmount : orderInfo.getOrderAmount()); userFlow.setBalance(shopUser.getAmount()); userFlow.setShopUserId(shopUser.getId()); userFlow.setBizCode("vipCardCash"); @@ -808,6 +821,7 @@ public class PayService { if (payAmount != null && discountAmount != null) { orderInfo.setPayAmount(payAmount); orderInfo.setDiscountAmount(discountAmount); + orderInfo.setDiscountRatio(ObjectUtil.isNotEmpty(payAmount)?payAmount.divide(orderInfo.getOrderAmount(),2,RoundingMode.HALF_UP).setScale(2,RoundingMode.HALF_DOWN):null); }else { orderInfo.setPayAmount(orderInfo.getOrderAmount()); } @@ -842,6 +856,7 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + return Result.success(CodeEnum.SUCCESS); } @@ -927,6 +942,11 @@ public class PayService { .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + // 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(orderId); + } + return Result.success(CodeEnum.SUCCESS); } @@ -1009,6 +1029,10 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + // 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(String.valueOf(orderId)); + } return Result.success(CodeEnum.SUCCESS); } @@ -1324,6 +1348,11 @@ public class PayService { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + + // 打印结算单 + if (StrUtil.isNotBlank(orderInfo.getTableId())) { + producer.printMechine(String.valueOf(orderId)); + } return Result.success(CodeEnum.SUCCESS); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java index f733984..c831e1f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java @@ -4,9 +4,12 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chaozhanggui.system.cashierservice.bean.TableStateEnum; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.vo.TbShopTableVO; +import com.chaozhanggui.system.cashierservice.mybatis.MpShopTableMapper; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.DateUtils; @@ -15,6 +18,7 @@ import com.chaozhanggui.system.cashierservice.util.TokenUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -37,6 +41,12 @@ public class ShopInfoService { @Autowired ShopUserDutyDetailMapper shopUserDutyDetailMapper; private final TbOrderInfoMapper orderInfoMapper; + @Qualifier("tbCashierCartMapper") + @Autowired + private TbCashierCartMapper tbCashierCartMapper; + @Autowired + private MpShopTableMapper mpShopTableMapper; + public ShopInfoService(TbOrderInfoMapper orderInfoMapper) { this.orderInfoMapper = orderInfoMapper; @@ -56,6 +66,17 @@ public class ShopInfoService { PageHelperUtil.startPage(page, pageSize); // List shopTables=tbShopTableMapper.selectByShopIdAndStatus(shopId,areaId,status); List tbShopTableVOList = tbShopTableMapper.selectTableInfo(shopId, areaId, status, DateUtils.getDay()); + for (TbShopTableVO tbShopTableVO : tbShopTableVOList) { + if (StrUtil.isBlank(tbShopTableVO.getQrcode())) { + tbShopTableVO.setStatus("closed"); + + }else if (tbCashierCartMapper.countTable(tbShopTableVO.getQrcode(), tbShopTableVO.getShopId()) < 1) { + tbShopTableVO.setStatus("idle"); + mpShopTableMapper.update(null, new LambdaUpdateWrapper() + .eq(TbShopTable::getQrcode, tbShopTableVO.getQrcode()) + .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + } + } PageInfo pageInfo=new PageInfo(tbShopTableVOList); return Result.success(CodeEnum.SUCCESS,pageInfo); diff --git a/src/main/resources/mapper/TbShopTableMapper.xml b/src/main/resources/mapper/TbShopTableMapper.xml index 4a17d7a..08c8a0b 100644 --- a/src/main/resources/mapper/TbShopTableMapper.xml +++ b/src/main/resources/mapper/TbShopTableMapper.xml @@ -242,6 +242,6 @@ and a.status = #{status} GROUP BY a.id - order by a.`sort` asc + order by a.id desc