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("账户未启用");
}