diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java index 9bb87a28b..bac8bc218 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java @@ -101,7 +101,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { } @Override - protected void normalOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List detailList) { + protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List detailList) { ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId()); String printerNum = "1"; if (StrUtil.isNotBlank(machine.getPrintQty())) { @@ -113,7 +113,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { .setOrderNo(orderInfo.getOrderNo()).setTradeDate(DateUtil.date().toDateStr()).setOperator("【POS-1】001").setPayAmount(orderInfo.getPayAmount().toPlainString()) .setOriginalAmount(orderInfo.getOriginAmount().toPlainString()).setReturn(isReturn(orderInfo)) .setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0") - .setOutNumber(orderInfo.getTakeCode()).setPrintTitle("结算单") + .setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单") .setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString()); String string = buildOrderPrintData(printInfoDTO, detailList); sendPrintRequest(machine.getAddress(), string, null, printerNum); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java index e155e05f8..05ccd4e2e 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java @@ -81,7 +81,7 @@ public abstract class PrinterHandler { @Getter public enum PrintTypeEnum { HANDOVER("交班", "handover"), - ORDER("订单", "order"), ONE("菜品", "one"), CALL("叫号", "call"), ONE_AND_ORDER("菜品和结算单同时打印", "oneAndOrder"); + ORDER("订单", "order"), ONE("菜品", "one"), CALL("叫号", "call"), ONE_AND_ORDER("菜品和结算单同时打印", "oneAndOrder"), PRE_ORDER("预结算单", "preOrder"); private final String name; private final String code; @@ -197,7 +197,7 @@ public abstract class PrinterHandler { } obj = orderInfo; shopId = orderInfo.getShopId(); - printMethod = "order"; + printMethod = "normal"; printType = "order"; break; case PrintTypeEnum.ONE: @@ -208,6 +208,15 @@ public abstract class PrinterHandler { obj = orderInfo; printMethod = "one"; break; + case PrintTypeEnum.PRE_ORDER: + orderInfo = orderInfoService.getById(data); + if (orderInfo == null) { + throw new RuntimeException("订单打印失败,订单不存在"); + } + obj = orderInfo; + printMethod = "normal"; + printType = "order"; + break; case PrintTypeEnum.ONE_AND_ORDER: orderInfo = orderInfoService.getById(data); if (orderInfo == null) { @@ -306,7 +315,16 @@ public abstract class PrinterHandler { log.info("准备开始打印订单"); if (data instanceof OrderInfo orderInfo) { List orderDetailList = orderDetailService.list(new QueryWrapper().eq(OrderDetail::getOrderId, orderInfo.getId())); - onlyFrontDesk(machine, orderInfo, orderDetailList); + onlyFrontDesk(machine, false, orderInfo, orderDetailList); + }else { + throw new RuntimeException("传递数据类型有误"); + } + break; + case PrintTypeEnum.PRE_ORDER: + log.info("准备开始打印预结算订单"); + if (data instanceof OrderInfo orderInfo) { + List orderDetailList = orderDetailService.list(new QueryWrapper().eq(OrderDetail::getOrderId, orderInfo.getId())); + onlyFrontDesk(machine, true, orderInfo, orderDetailList); }else { throw new RuntimeException("传递数据类型有误"); } @@ -332,7 +350,7 @@ public abstract class PrinterHandler { log.info("准备开始打印菜品以及结算单"); if (data instanceof OrderInfo orderInfo) { List orderDetailList = orderDetailService.list(new QueryWrapper().eq(OrderDetail::getOrderId, orderInfo.getId())); - onlyFrontDesk(machine, orderInfo, orderDetailList); + onlyFrontDesk(machine, false, orderInfo, orderDetailList); onlyKitchen(machine, orderInfo, orderDetailList); }else { throw new RuntimeException("传递数据类型有误"); @@ -417,7 +435,7 @@ public abstract class PrinterHandler { /** * 仅打印结算单「前台」 */ - private void onlyFrontDesk(PrintMachine machine, OrderInfo orderInfo, List tbOrderDetailList) { + private void onlyFrontDesk(PrintMachine machine, boolean isPre, OrderInfo orderInfo, List tbOrderDetailList) { // 判断订单是否是先付费或者已结算 if (OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus()) || OrderStatusEnums.CANCELLED.getCode().equals(orderInfo.getStatus())) { log.warn("此订单未支付或已取消, 订单信息: {}", orderInfo); @@ -471,7 +489,7 @@ public abstract class PrinterHandler { if (isReturn(orderInfo)) { returnOrderPrint(orderInfo, machine, balance, tbOrderDetailList); } else { - normalOrderPrint(orderInfo, machine, balance, tbOrderDetailList); + normalOrderPrint(orderInfo, isPre, machine, balance, tbOrderDetailList); } } } @@ -531,7 +549,7 @@ public abstract class PrinterHandler { protected abstract void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List detailList); - protected abstract void normalOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List detailList); + protected abstract void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List detailList); protected abstract void callNumPrint(PrintMachine machine, String callNum, String shopName, String tableName, String tableNote, String preNum, String codeUrl, LocalDateTime takeTime, String shopNote); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java index 132b37cb3..a0a165f04 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java @@ -147,13 +147,13 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { } @Override - protected void normalOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List detailList) { + protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List detailList) { ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId()); PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()).setPrintType("普通打印").setPickupNum(getPickupNum(orderInfo)) .setOrderNo(orderInfo.getOrderNo()).setTradeDate(DateUtil.date().toDateStr()).setOperator("【POS-1】001").setPayAmount(orderInfo.getPayAmount().toPlainString()) .setOriginalAmount(orderInfo.getOriginAmount().toPlainString()).setReturn(isReturn(orderInfo)) .setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0") - .setOutNumber(orderInfo.getTakeCode()).setPrintTitle("结算单") + .setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单") .setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString()); String data = buildOrderPrintData(printInfoDTO, detailList); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 500d7c7bc..378c13bdf 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -790,6 +790,15 @@ public class OrderInfoServiceImpl extends ServiceImpl