排队叫号打印

This commit is contained in:
张松 2025-03-18 17:08:51 +08:00
parent 06c3fd012d
commit faa8e8331c
6 changed files with 43 additions and 10 deletions

View File

@ -80,4 +80,12 @@ public class PrintMqListener {
public void handoverPrint(String id) {
invokeFun("handoverPrint", "java.order", id, (data) -> printerHandler.handler(data, PrinterHandler.PrintTypeEnum.HANDOVER));
}
/**
* 交班打印
*/
@RabbitListener(queues = {"${spring.profiles.active}-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE})
public void callTablePrint(String id) {
invokeFun("handoverPrint", "java.order", id, (data) -> printerHandler.handler(data, PrinterHandler.PrintTypeEnum.CALL));
}
}

View File

@ -45,6 +45,11 @@ public class RabbitConfig {
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE, true, false, false);
}
@Bean
public Queue callTablePrintQueue() {
return new Queue(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE, true, false, false);
}
@Bean
public Queue orderCancelQueue() {
return new Queue(activeProfile + "-" + RabbitConstants.Queue.ORDER_CANCEL_QUEUE, true);
@ -77,6 +82,11 @@ public class RabbitConfig {
return BindingBuilder.bind(orderPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_PRINT_QUEUE);
}
@Bean
public Binding bindingCallTablePrintExchange(Queue callTablePrintQueue, DirectExchange exchange) {
return BindingBuilder.bind(callTablePrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.CALL_TABLE_PRINT_QUEUE);
}
@Bean
public Binding bindingHandoverPrintExchange(Queue handoverPrintQueue, DirectExchange exchange) {
return BindingBuilder.bind(handoverPrintQueue).to(exchange).with(activeProfile + "-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE);

View File

@ -16,6 +16,7 @@ public interface RabbitConstants {
public static final String ORDER_PRINT_QUEUE = "order.print.queue";
public static final String ORDER_MACHINE_PRINT_QUEUE = "order.machine.print.queue";
public static final String ORDER_HANDOVER_PRINT_QUEUE = "order.handover.print.queue";
public static final String CALL_TABLE_PRINT_QUEUE = "call.table.print.queue";
public static final String PRODUCT_INFO_CHANGE_QUEUE = "product.info.change.queue";
}
}

View File

@ -85,6 +85,13 @@ public class RabbitPublisher {
sendMsg(RabbitConstants.Queue.PRODUCT_INFO_CHANGE_QUEUE, shopId);
}
/**
* 排队叫号小票打印
* @param id 叫号队列id
*/
public void printCallNumTicket(Long id) {
sendMsg(RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE, id.toString());
}
private void sendMsg(String queue, String msg) {

View File

@ -8,6 +8,7 @@ import cn.hutool.extra.qrcode.QrConfig;
import com.czg.account.dto.calltable.*;
import com.czg.account.entity.*;
import com.czg.account.service.*;
import com.czg.config.RabbitPublisher;
import com.czg.config.RedisCst;
import com.czg.exception.ApiNotPrintException;
import com.czg.resp.CzgResult;
@ -59,6 +60,8 @@ public class CallTableServiceImpl extends ServiceImpl<CallTableMapper, CallTable
private CallConfigService callConfigService;
@Resource
private CallQueueMapper callQueueMapper;
@Resource
private RabbitPublisher rabbitPublisher;
@Override
public CallTablePage get(Long shopId, Long callTableId, Integer state) {
@ -215,8 +218,8 @@ public class CallTableServiceImpl extends ServiceImpl<CallTableMapper, CallTable
callQueueService.save(callQueue);
// todo 打印排号票信息
// rabbitMsgUtils.printCallNumTicket(callQueue.getId(), callQueue.getShopId());
// 打印排号票信息
rabbitPublisher.printCallNumTicket(callQueue.getId());
return new CallTableNumDTO().setTableName(callTable.getName()).setTableNote(callTable.getNote())
.setCallNum(callQueue.getCallNum());

View File

@ -232,6 +232,15 @@ public abstract class PrinterHandler {
printMethod = "all";
break;
case PrintTypeEnum.CALL:
CallQueue queue = callQueueService.getById(data);
if (queue == null) {
throw new RuntimeException("叫号信息不存在: " + data);
}
shopId = queue.getShopId();
obj = queue;
printType = "queue";
break;
default:
throw new RuntimeException("未知打印类型");
@ -346,8 +355,8 @@ public abstract class PrinterHandler {
break;
case PrintTypeEnum.CALL:
log.info("准备开始打印叫号单");
if (data instanceof Long id) {
onlyCallNumPrint(machine, id);
if (data instanceof CallQueue queue) {
onlyCallNumPrint(machine, queue);
}else {
throw new RuntimeException("传递数据类型有误");
}
@ -506,12 +515,7 @@ public abstract class PrinterHandler {
/**
* 打印排队小票
*/
private void onlyCallNumPrint(PrintMachine machine, Long callQueueId) {
if (callQueueId == null) {
log.warn("打印叫号小票失败id为空");
}
CallQueue queue = callQueueService.getById(callQueueId);
private void onlyCallNumPrint(PrintMachine machine, CallQueue queue) {
if (queue == null) {
log.warn("叫号记录不存在");
return;