From a204ed597bbca75c757f7393d9d6b453ac44eab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Feb 2025 14:11:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/czg/mq/PrintMqListener.java | 14 ++-- .../czg/service/account/print/FeiPrinter.java | 22 ++++- .../service/account/print/PrinterImpl.java | 16 +++- .../czg/service/account/print/YxyPrinter.java | 82 ++++++------------- .../impl/AuthorizationServiceImpl.java | 3 + 5 files changed, 70 insertions(+), 67 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/mq/PrintMqListener.java b/cash-api/account-server/src/main/java/com/czg/mq/PrintMqListener.java index 92b2914e..b9474a32 100644 --- a/cash-api/account-server/src/main/java/com/czg/mq/PrintMqListener.java +++ b/cash-api/account-server/src/main/java/com/czg/mq/PrintMqListener.java @@ -46,14 +46,14 @@ public class PrintMqListener { log.info("接收到订单打印消息:{}", orderId); MqLog mqLog = new MqLog().setQueue(RabbitConstants.Queue.ORDER_PRINT_QUEUE).setMsg(orderId).setType("orderPrint").setPlat("java.account").setCreateTime(DateUtil.date().toLocalDateTime()); try { -// OrderInfo orderInfo = orderInfoService.getById(orderId); -// if (orderInfo == null) { -// log.error("订单信息不存在, {}", orderId); -// throw new RuntimeException("订单信息不存在"); -// } + OrderInfo orderInfo = orderInfoService.getById(orderId); + if (orderInfo == null) { + log.error("订单信息不存在, {}", orderId); + throw new RuntimeException("订单信息不存在"); + } - getPrintMachine(1L, "cash", "queue", "queue").forEach(machine -> { - printerHandler.handleRequest(machine, null, 1L); + getPrintMachine(1L, "cash", "one", "one").forEach(machine -> { + printerHandler.handleRequest(machine, orderInfo, null); // printPlaceTicket(isReturn, machine, orderInfo, shopInfo); }); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/print/FeiPrinter.java b/cash-service/account-service/src/main/java/com/czg/service/account/print/FeiPrinter.java index 4f8e52ed..981e1245 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/print/FeiPrinter.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/print/FeiPrinter.java @@ -69,6 +69,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl{ private final PrintSignLabel printSignLabel = new PrintSignLabel() .setBr("
") + .setCut("") .setF(new String[]{"", ""}) .setL(new String[]{"", ""}) @@ -94,12 +95,29 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl{ @Override protected void returnDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { - log.warn("退菜打印功能未实现"); + String remark = orderDetail.getRemark(); + String content = buildDishPrintData(true, getPickupNum(orderInfo), orderInfo.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + orderDetail.getProductName(), orderDetail.getSkuName(), orderDetail.getNum(), remark, orderDetail.getProGroupInfo()); + sendPrintRequest(machine.getAddress(), content, null,"1"); } @Override protected void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List detailList) { - log.warn("退单打印功能未实现"); + ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId()); + String printerNum = "1"; + if (StrUtil.isNotBlank(machine.getPrintQty())) { + printerNum = machine.getPrintQty().split("\\^")[1]; + } + + 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("结算单") + .setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString()); + String string = buildOrderPrintData(printInfoDTO, detailList); + sendPrintRequest(machine.getAddress(), string, null, printerNum); } @Override diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/print/PrinterImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/print/PrinterImpl.java index 24daafbb..b01fcffb 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/print/PrinterImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/print/PrinterImpl.java @@ -36,6 +36,14 @@ public interface PrinterImpl { private String[] l; private String[] qr; private String cut; + private String out; + + public String getOut(int num) { + if (out != null) { + return StrUtil.format("<{}:{}>", out, num); + } + return ""; + } } @@ -248,7 +256,7 @@ public interface PrinterImpl { // data.append(StrUtil.format("备注:{}
", printInfoDTO.getRemark())); } if (Objects.nonNull(printInfoDTO.getOutNumber())) { - data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.qr)) + data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.center, signLabelInfo.qr)) .append(signLabelInfo.br); // data.append("".concat(printInfoDTO.getOutNumber()).concat("
")); } @@ -257,6 +265,7 @@ public interface PrinterImpl { .append(signLabelInfo.br); // data.append("打印时间:").append(DateUtil.date().toDateStr()).append("
"); // data.append(""); + data.append(signLabelInfo.getOut(180)); data.append(signLabelInfo.cut); // data.append(""); return data.toString(); @@ -293,11 +302,11 @@ public interface PrinterImpl { .append(signLabelInfo.br); // builder.append("时间: ").append(date).append("


"); if (productName.length() > 4 || skuName.length() > 4) { - builder.append(getFormatLabel(StrUtil.format("{} x {}", productName, number.stripTrailingZeros().toPlainString()), signLabelInfo.bold, signLabelInfo.l)) + builder.append(getFormatLabel(StrUtil.format("{} x {}", productName, number.stripTrailingZeros().toPlainString()), signLabelInfo.l)) .append(signLabelInfo.br); // builder.append("").append(productName).append(" x ").append(number).append("
"); if (StrUtil.isNotBlank(skuName)) { - builder.append(getFormatLabel(skuName, signLabelInfo.bold, signLabelInfo.l)).append(signLabelInfo.br); + builder.append(getFormatLabel(skuName, signLabelInfo.l)).append(signLabelInfo.br); // builder.append("").append(skuName).append("
"); } } else { @@ -326,6 +335,7 @@ public interface PrinterImpl { } } builder.append(signLabelInfo.br) + .append(signLabelInfo.getOut(150)) .append(signLabelInfo.cut); // builder.append(""); // builder.append(""); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/print/YxyPrinter.java b/cash-service/account-service/src/main/java/com/czg/service/account/print/YxyPrinter.java index f1f5e0f0..3f41f4c1 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/print/YxyPrinter.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/print/YxyPrinter.java @@ -57,13 +57,14 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { private PrinterImpl.PrintSignLabel printSignLabel = new PrinterImpl.PrintSignLabel() .setBr("
") - .setCut("PCUT") + .setCut("") + .setOut("OUT") .setF(new String[]{"", ""}) .setL(new String[]{"", ""}) .setS(new String[]{"", ""}) .setQr(new String[]{"", ""}) - .setCenter(new String[]{"", ""}) - .setBold(new String[]{"", ""}); + .setCenter(new String[]{"", ""}) + .setBold(new String[]{"", ""}); @Override public PrinterImpl.PrintSignLabel getSignLabelInfo() { @@ -110,23 +111,41 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { @Override protected void normalDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { - // todo 修改为bigdecimal - String data = getPrintData("", getPickupNum(orderInfo), - DateUtil.format(orderDetail.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), orderDetail.getProductName(), - orderDetail.getNum().intValue(), orderDetail.getSkuName(), orderDetail.getRemark(), orderDetail.getProGroupInfo()); + String buildDishPrintData = buildDishPrintData(false, getPickupNum(orderInfo), DateUtil.format(orderDetail.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), orderDetail.getProductName(), orderDetail.getSkuName(), + orderDetail.getNum(), orderDetail.getRemark(), orderDetail.getProGroupInfo()); // String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; + sendPrintRequest(machine.getAddress(), buildDishPrintData, voiceJson, "1"); // sendPrintRequest(voiceJson, 3, 1, machine.getAddress(), data); } @Override protected void returnDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { - + String buildDishPrintData = buildDishPrintData(true, getPickupNum(orderInfo), DateUtil.format(orderDetail.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), orderDetail.getProductName(), orderDetail.getSkuName(), + orderDetail.getNum(), orderDetail.getRemark(), orderDetail.getProGroupInfo()); +// String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; + sendPrintRequest(machine.getAddress(), buildDishPrintData, voiceJson, "1"); } @Override protected void returnOrderPrint(OrderInfo orderInfo, 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("结算单") + .setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString()); + String data = buildOrderPrintData(printInfoDTO, detailList); + String voiceJson = "{\"PbizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; +// String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; + String printerNum = "1"; + if (StrUtil.isNotBlank(machine.getPrintQty())) { + printerNum = machine.getPrintQty().split("\\^")[1]; + } + String resp = sendPrintRequest(machine.getAddress(), data, voiceJson, printerNum); } @Override @@ -156,53 +175,6 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { sendPrintRequest(machine.getAddress(), resp, null, "1"); } - /** - * 菜品票打印 - * - * @param type 是否退菜单 - * @param pickupNumber 取餐号 - * @param date 时间 - * @param productName 商品名 - * @param number 数量 - * @param skuName sku规格名 - * @param note 备注 - */ - public static String getPrintData(String type, String pickupNumber, String date, String productName, Integer number, String skuName, String note, String proGroupInfo) { - StringBuilder builder = new StringBuilder(); - if ("return".equals(type)) { - builder.append("").append(pickupNumber).append("【退】

"); - } else { - builder.append("").append(pickupNumber).append("

"); - } - builder.append("时间: ").append(date).append("


"); - skuName = StrUtil.emptyToDefault(skuName, ""); - if (productName.length() > 4 || skuName.length() > 4) { - builder.append("").append(productName).append(" x ").append(number).append("
"); - if (StrUtil.isNotBlank(skuName)) { - builder.append("").append(skuName).append("
"); - } - } else { - builder.append("").append(productName).append(" x ").append(number).append("
"); - if (StrUtil.isNotBlank(skuName)) { - builder.append("").append(skuName).append("
"); - } - } - if (StrUtil.isNotBlank(note)) { - builder.append("备注: ").append(note).append("
"); - } - if (!StrUtil.isBlank(proGroupInfo) && JSONUtil.isTypeJSONArray(proGroupInfo)) { - JSONArray subItems = cn.hutool.json.JSONUtil.parseArray(proGroupInfo); - for (int i = 0; i < subItems.size(); i++) { - String proName = subItems.getJSONObject(i).getStr("proName"); - int qty = subItems.getJSONObject(i).getInt("number"); - builder.append("(").append(i + 1).append(")").append(proName).append(" x ").append(qty).append("
"); - } - } - builder.append(""); - builder.append(""); - return builder.toString(); - } - /** * 获取TOKEN值 * diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java index d8b969e6..23689073 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java @@ -75,6 +75,9 @@ public class AuthorizationServiceImpl implements AuthorizationService { if (StrUtil.isNotBlank(loginDTO.staffUserName())) { // 查询主账号 SysUser sysUser = sysUserService.queryChain().eq(SysUser::getAccount, loginDTO.username()).one(); + if (sysUser == null) { + throw new ApiNotPrintException("登录账号不存在"); + } if (StatusEnum.DISABLE.value() == sysUser.getStauts()) { throw new ApiNotPrintException("账户未启用"); }