Merge remote-tracking branch 'origin/master'

This commit is contained in:
Tankaikai
2025-02-26 14:14:56 +08:00
5 changed files with 70 additions and 67 deletions

View File

@@ -46,14 +46,14 @@ public class PrintMqListener {
log.info("接收到订单打印消息:{}", orderId); log.info("接收到订单打印消息:{}", orderId);
MqLog mqLog = new MqLog().setQueue(RabbitConstants.Queue.ORDER_PRINT_QUEUE).setMsg(orderId).setType("orderPrint").setPlat("java.account").setCreateTime(DateUtil.date().toLocalDateTime()); MqLog mqLog = new MqLog().setQueue(RabbitConstants.Queue.ORDER_PRINT_QUEUE).setMsg(orderId).setType("orderPrint").setPlat("java.account").setCreateTime(DateUtil.date().toLocalDateTime());
try { try {
// OrderInfo orderInfo = orderInfoService.getById(orderId); OrderInfo orderInfo = orderInfoService.getById(orderId);
// if (orderInfo == null) { if (orderInfo == null) {
// log.error("订单信息不存在, {}", orderId); log.error("订单信息不存在, {}", orderId);
// throw new RuntimeException("订单信息不存在"); throw new RuntimeException("订单信息不存在");
// } }
getPrintMachine(1L, "cash", "queue", "queue").forEach(machine -> { getPrintMachine(1L, "cash", "one", "one").forEach(machine -> {
printerHandler.handleRequest(machine, null, 1L); printerHandler.handleRequest(machine, orderInfo, null);
// printPlaceTicket(isReturn, machine, orderInfo, shopInfo); // printPlaceTicket(isReturn, machine, orderInfo, shopInfo);
}); });

View File

@@ -69,6 +69,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl{
private final PrintSignLabel printSignLabel = new PrintSignLabel() private final PrintSignLabel printSignLabel = new PrintSignLabel()
.setBr("<BR>") .setBr("<BR>")
.setCut("") .setCut("")
.setF(new String[]{"<F>", "</F>"}) .setF(new String[]{"<F>", "</F>"})
.setL(new String[]{"<L>", "</L>"}) .setL(new String[]{"<L>", "</L>"})
@@ -94,12 +95,29 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl{
@Override @Override
protected void returnDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { 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 @Override
protected void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List<OrderDetail> detailList) { protected void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List<OrderDetail> 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 @Override

View File

@@ -36,6 +36,14 @@ public interface PrinterImpl {
private String[] l; private String[] l;
private String[] qr; private String[] qr;
private String cut; 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("<L><BOLD>备注:{}</BOLD></L><BR>", printInfoDTO.getRemark())); // data.append(StrUtil.format("<L><BOLD>备注:{}</BOLD></L><BR>", printInfoDTO.getRemark()));
} }
if (Objects.nonNull(printInfoDTO.getOutNumber())) { if (Objects.nonNull(printInfoDTO.getOutNumber())) {
data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.qr)) data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.center, signLabelInfo.qr))
.append(signLabelInfo.br); .append(signLabelInfo.br);
// data.append("<QR>".concat(printInfoDTO.getOutNumber()).concat("</QR><BR>")); // data.append("<QR>".concat(printInfoDTO.getOutNumber()).concat("</QR><BR>"));
} }
@@ -257,6 +265,7 @@ public interface PrinterImpl {
.append(signLabelInfo.br); .append(signLabelInfo.br);
// data.append("<S>打印时间:").append(DateUtil.date().toDateStr()).append("</S><BR>"); // data.append("<S>打印时间:").append(DateUtil.date().toDateStr()).append("</S><BR>");
// data.append("<OUT:180>"); // data.append("<OUT:180>");
data.append(signLabelInfo.getOut(180));
data.append(signLabelInfo.cut); data.append(signLabelInfo.cut);
// data.append("<PCUT>"); // data.append("<PCUT>");
return data.toString(); return data.toString();
@@ -293,11 +302,11 @@ public interface PrinterImpl {
.append(signLabelInfo.br); .append(signLabelInfo.br);
// builder.append("<S><L>时间: ").append(date).append(" </L></S><BR><BR><BR>"); // builder.append("<S><L>时间: ").append(date).append(" </L></S><BR><BR><BR>");
if (productName.length() > 4 || skuName.length() > 4) { 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); .append(signLabelInfo.br);
// builder.append("<CS:32>").append(productName).append(" x ").append(number).append("</CS><BR>"); // builder.append("<CS:32>").append(productName).append(" x ").append(number).append("</CS><BR>");
if (StrUtil.isNotBlank(skuName)) { 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("<CS:32>").append(skuName).append(" </CS><BR>"); // builder.append("<CS:32>").append(skuName).append(" </CS><BR>");
} }
} else { } else {
@@ -326,6 +335,7 @@ public interface PrinterImpl {
} }
} }
builder.append(signLabelInfo.br) builder.append(signLabelInfo.br)
.append(signLabelInfo.getOut(150))
.append(signLabelInfo.cut); .append(signLabelInfo.cut);
// builder.append("<OUT:150>"); // builder.append("<OUT:150>");
// builder.append("<PCUT>"); // builder.append("<PCUT>");

View File

@@ -57,13 +57,14 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
private PrinterImpl.PrintSignLabel printSignLabel = new PrinterImpl.PrintSignLabel() private PrinterImpl.PrintSignLabel printSignLabel = new PrinterImpl.PrintSignLabel()
.setBr("<BR>") .setBr("<BR>")
.setCut("PCUT") .setCut("<PCUT>")
.setOut("OUT")
.setF(new String[]{"<F>", "</F>"}) .setF(new String[]{"<F>", "</F>"})
.setL(new String[]{"<L>", "</L>"}) .setL(new String[]{"<L>", "</L>"})
.setS(new String[]{"<S>", "</S>"}) .setS(new String[]{"<S>", "</S>"})
.setQr(new String[]{"<QR>", "</QR>"}) .setQr(new String[]{"<QR>", "</QR>"})
.setCenter(new String[]{"<CB>", "</CB>"}) .setCenter(new String[]{"<C>", "</C>"})
.setBold(new String[]{"<BOLD>", "</BOLD>"}); .setBold(new String[]{"<B>", "</B>"});
@Override @Override
public PrinterImpl.PrintSignLabel getSignLabelInfo() { public PrinterImpl.PrintSignLabel getSignLabelInfo() {
@@ -110,23 +111,41 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
@Override @Override
protected void normalDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { protected void normalDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) {
// todo 修改为bigdecimal String buildDishPrintData = buildDishPrintData(false, getPickupNum(orderInfo), DateUtil.format(orderDetail.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), orderDetail.getProductName(), orderDetail.getSkuName(),
String data = getPrintData("", getPickupNum(orderInfo), orderDetail.getNum(), orderDetail.getRemark(), orderDetail.getProGroupInfo());
DateUtil.format(orderDetail.getCreateTime(), "yyyy-MM-dd HH:mm:ss"), orderDetail.getProductName(),
orderDetail.getNum().intValue(), orderDetail.getSkuName(), orderDetail.getRemark(), orderDetail.getProGroupInfo());
// String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}";
String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}";
sendPrintRequest(machine.getAddress(), buildDishPrintData, voiceJson, "1");
// sendPrintRequest(voiceJson, 3, 1, machine.getAddress(), data); // sendPrintRequest(voiceJson, 3, 1, machine.getAddress(), data);
} }
@Override @Override
protected void returnDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { 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 @Override
protected void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List<OrderDetail> detailList) { protected void returnOrderPrint(OrderInfo orderInfo, PrintMachine machine, String balance, List<OrderDetail> 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 @Override
@@ -156,53 +175,6 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
sendPrintRequest(machine.getAddress(), resp, null, "1"); 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("<C><B>").append(pickupNumber).append("【退】</B></C><BR><BR>");
} else {
builder.append("<C><B>").append(pickupNumber).append("</B></C><BR><BR>");
}
builder.append("<S><L>时间: ").append(date).append(" </L></S><BR><BR><BR>");
skuName = StrUtil.emptyToDefault(skuName, "");
if (productName.length() > 4 || skuName.length() > 4) {
builder.append("<CS:32>").append(productName).append(" x ").append(number).append("</CS><BR>");
if (StrUtil.isNotBlank(skuName)) {
builder.append("<CS:32>").append(skuName).append(" </CS><BR>");
}
} else {
builder.append("<B>").append(productName).append(" x ").append(number).append("</B><BR>");
if (StrUtil.isNotBlank(skuName)) {
builder.append("<B>").append(skuName).append(" </B><BR>");
}
}
if (StrUtil.isNotBlank(note)) {
builder.append("<S><L>备注: ").append(note).append(" </L></S><BR>");
}
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("<CS:32>(").append(i + 1).append(")").append(proName).append(" x ").append(qty).append("</CS><BR>");
}
}
builder.append("<OUT:150>");
builder.append("<PCUT>");
return builder.toString();
}
/** /**
* 获取TOKEN值 * 获取TOKEN值
* *

View File

@@ -75,6 +75,9 @@ public class AuthorizationServiceImpl implements AuthorizationService {
if (StrUtil.isNotBlank(loginDTO.staffUserName())) { if (StrUtil.isNotBlank(loginDTO.staffUserName())) {
// 查询主账号 // 查询主账号
SysUser sysUser = sysUserService.queryChain().eq(SysUser::getAccount, loginDTO.username()).one(); SysUser sysUser = sysUserService.queryChain().eq(SysUser::getAccount, loginDTO.username()).one();
if (sysUser == null) {
throw new ApiNotPrintException("登录账号不存在");
}
if (StatusEnum.DISABLE.value() == sysUser.getStauts()) { if (StatusEnum.DISABLE.value() == sysUser.getStauts()) {
throw new ApiNotPrintException("账户未启用"); throw new ApiNotPrintException("账户未启用");
} }