diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java index f190219..deacaf4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.entity; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.io.Serializable; @@ -37,7 +38,8 @@ public class TbOrderDetail implements Serializable { private BigDecimal priceAmount; private BigDecimal packAmount; + @TableField(exist = false) private String remark; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachine.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachine.java index e07c140..47111fb 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachine.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachine.java @@ -1,7 +1,10 @@ package com.chaozhanggui.system.cashierservice.entity; +import lombok.ToString; + import java.io.Serializable; +@ToString public class TbPrintMachine implements Serializable { private Integer id; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineWithBLOBs.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineWithBLOBs.java index c13b47f..3f61c1f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineWithBLOBs.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineWithBLOBs.java @@ -1,7 +1,10 @@ package com.chaozhanggui.system.cashierservice.entity; +import lombok.ToString; + import java.io.Serializable; +@ToString public class TbPrintMachineWithBLOBs extends TbPrintMachine implements Serializable { private String config; @@ -24,4 +27,4 @@ public class TbPrintMachineWithBLOBs extends TbPrintMachine implements Serializa public void setCategoryList(String categoryList) { this.categoryList = categoryList == null ? null : categoryList.trim(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MPOrderDetailMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MPOrderDetailMapper.java new file mode 100644 index 0000000..695611b --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MPOrderDetailMapper.java @@ -0,0 +1,8 @@ +package com.chaozhanggui.system.cashierservice.mybatis; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; +import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; + +public interface MPOrderDetailMapper extends BaseMapper { +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java new file mode 100644 index 0000000..e89d34b --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java @@ -0,0 +1,459 @@ +package com.chaozhanggui.system.cashierservice.rabbit; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.chaozhanggui.system.cashierservice.dao.*; +import com.chaozhanggui.system.cashierservice.entity.*; +import com.chaozhanggui.system.cashierservice.model.CategoryInfo; +import com.chaozhanggui.system.cashierservice.model.OrderDetailPO; +import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; +import com.chaozhanggui.system.cashierservice.mybatis.MpPrintMachineMapper; +import com.chaozhanggui.system.cashierservice.util.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +@Slf4j +@Component +@Service +public class PrintConsumer { + + + @Autowired + TbShopUserMapper tbShopUserMapper; + @Autowired + private TbOrderInfoMapper tbOrderInfoMapper; + @Autowired + private TbPrintMachineMapper tbPrintMachineMapper; + @Autowired + private TbCashierCartMapper tbCashierCartMapper; + @Autowired + private TbProductSkuMapper tbProductSkuMapper; + @Autowired + private TbShopInfoMapper tbShopInfoMapper; + + @Autowired + private TbProductMapper tbProductMapper; + + @Autowired + private TbOrderDetailMapper tbOrderDetailMapper; + @Autowired + + private RedisUtil redisUtils; + + private final RedisTemplate redisTemplate; + @Autowired + private MpPrintMachineMapper mpPrintMachineMapper; + @Autowired + private MPOrderDetailMapper mPOrderDetailMapper; + + public PrintConsumer(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @RabbitListener(queues = {RabbitConstants.QUEUE_PRINT_DISHES}) + public void printDishesListener(JSONObject jsonObject) { + try { + log.info("打印消息mq 接收到打印菜品消息,消息内容: {}", jsonObject); + Integer orderId = jsonObject.getInteger("orderId"); + JSONArray orderDetailIds = jsonObject.getJSONArray("orderDetailIds"); + Boolean isReturn = jsonObject.getBoolean("isReturn"); + + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId); + if (ObjectUtil.isEmpty(orderInfo)) { + log.error("没有对应的订单信息"); + return; + } + List orderDetails = mPOrderDetailMapper.selectList(new LambdaQueryWrapper() + .in(TbOrderDetail::getId, orderDetailIds)); + getPrintMachine(Integer.valueOf(orderInfo.getShopId()), "cash").forEach(machine -> { + log.info("打印机信息: {}", machine); + JSONObject config = JSONObject.parseObject(machine.getConfig()); + String model = config.getString("model"); + if (!"one".equals(model)) { + return; + } + + List categoryInfos = JSONUtil.parseJSONStr2TList(config.getJSONArray("categoryList").toString(), CategoryInfo.class); + orderDetails.forEach(item -> { + printDishesTicket(isReturn, machine, item, orderInfo, categoryInfos); + }); + }); + + } catch (Exception e) { + log.warn("打印菜品失败", e); + } + + } + + @RabbitListener(queues = {RabbitConstants.QUEUE_PRINT_PLACE}) + public void printPlaceListener(JSONObject jsonObject) { + try { + log.info("打印消息mq 接收到打印结算单消息,消息内容: {}", jsonObject); + Integer orderId = jsonObject.getInteger("orderId"); + Boolean isReturn = jsonObject.getBoolean("isReturn"); + + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId); + if (ObjectUtil.isEmpty(orderInfo)) { + log.error("没有对应的订单信息"); + return; + } + + TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); + if (shopInfo == null) { + log.error("店铺信息不存在"); + return; + } + + getPrintMachine(shopInfo.getId(), "cash").forEach(machine -> { + log.info("打印机信息: {}", machine); + JSONObject config = JSONObject.parseObject(machine.getConfig()); + String model = config.getString("model"); + if (!"normal".equals(model)) { + return; + } + printPlaceTicket(isReturn, machine, orderInfo, shopInfo); + }); + + } catch (Exception e) { + log.warn("打印菜品失败", e); + } + } + + + private List getPrintMachine(Integer shopId, String subType) { + TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(shopId); + if (ObjectUtil.isEmpty(shopInfo)) { + log.error("店铺信息不存在"); + return new ArrayList<>(); + } + + List list = mpPrintMachineMapper.selectList(new LambdaQueryWrapper() + .eq(TbPrintMachine::getStatus, 1) + .eq(TbPrintMachine::getShopId, shopId) + .eq(TbPrintMachine::getSubType, subType) + .eq(TbPrintMachine::getConnectionType, "network")); + if (list.isEmpty()) { + log.error("店铺未配置打印机,店铺id: {}", shopId); + return list; + } + log.info("打印机列表: {}", list); + return list; + + } + + + /** + * 打印菜品单 + * + * @param isReturn 是否退款单 + */ + private void printDishesTicket(boolean isReturn, TbPrintMachine tbPrintMachineWithBLOBs, TbOrderDetail item, TbOrderInfo orderInfo, List categoryInfos) { + log.info("开始打印一菜一品票据,商品名:{}", item.getProductName()); + if (item.getProductId().equals(-999)) { + return; + } + String categoryId = tbProductMapper.selectByPrimaryKey(item.getProductId()).getCategoryId(); + TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(item.getProductSkuId()); + if (sku == null) { + log.error("商品不存在, id: {}", item.getProductSkuId()); + return; + } + + long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + + if (count == 0) { + log.warn("分类未添加菜品: {} : {}", item.getProductName(), sku.getSpecSnap()); + return; + } + + String remark = StrUtil.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : ""; + item.setRemark(remark); + + String data; + String voiceJson; + if (isReturn) { + + data = PrinterUtils.getPrintData("return", + StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), item.getProductName(), Math.abs(item.getNum()), remark); + voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); + + } else { + data = PrinterUtils.getPrintData("", orderInfo.getMasterId(), + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), item.getProductName(), + item.getNum(), remark); + voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); + } + } + + /** + * 打印结算单 + */ + private void printPlaceTicket(boolean isReturn, TbPrintMachine printMachine, TbOrderInfo orderInfo, TbShopInfo shopInfo) { + + List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(orderInfo.getId()); + if (!tbOrderDetails.isEmpty()) { + List detailList = new ArrayList<>(); + tbOrderDetails.parallelStream().forEach(it -> { + + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + detailList.add(detail); + + }); + String balance = "0"; + + if ("deposit".equals(orderInfo.getPayType())) { + TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) { + balance = user.getAmount().toPlainString(); + } + } + + + if (!detailList.isEmpty()) { + if (isReturn) { + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", + ObjectUtil.isEmpty(orderInfo.getMasterId()) || + ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), + orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), + "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance, orderInfo.getPayType(), + "0", detailList, orderInfo.getRemark(), null, null); + + String printType = "退款单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 1, 1, printMachine.getAddress(), data); + } else { + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", + orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), + orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), + "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, + (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), + "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, + orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); + detailPO.setOutNumber(orderInfo.getOutNumber()); + String printType = "结算单"; + String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 3, 1, printMachine.getAddress(), data); + } + } + } + } + + + private void fePrinter(TbPrintMachine tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos) { + String orderId = orderInfo.getId().toString(); + switch (tbPrintMachineWithBLOBs.getSubType()) { + case "label": //标签打印机 + List cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "final"); + if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { + cashierCarts.parallelStream().forEach(it -> { + + String categoryId; + if (ObjectUtil.isEmpty(it.getCategoryId())) { + categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + } else { + categoryId = it.getCategoryId(); + } + + + Long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + + log.info("获取当前类别是否未打印类别:{}", count); + + + if (count > 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + for (int i = 0; i < it.getNumber(); i++) { + FeieyunPrintUtil.printLabelMsg(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getTableName(), it.getName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), it.getSalePrice().toPlainString(), remark); + } + } + }); + } + + break; + case "cash": //小票打印机 + switch (model) { + case "normal": //普通出单 + + if ("return".equals(orderInfo.getOrderType())) { + List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); + if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { + List detailList = new ArrayList<>(); + tbOrderDetails.parallelStream().forEach(it -> { + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + + Long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + log.info("获取当前类别是否未打印类别:{}", count); + + + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + detailList.add(detail); + + }); + String balance = "0"; + + if ("deposit".equals(orderInfo.getPayType())) { + TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) { + balance = user.getAmount().toPlainString(); + } + } + + + if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { +// OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio().toPlainString()); + + String printType = "退款单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); +// String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; +// PrinterUtils.printTickets(voiceJson,1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + } + + + } else { + cashierCarts = cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "final"); + + if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { + List detailList = new ArrayList<>(); + cashierCarts.parallelStream().forEach(it -> { + String categoryId; + if (ObjectUtil.isEmpty(it.getCategoryId())) { + categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + } else { + categoryId = it.getCategoryId(); + } + + + Long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + + if (count > 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), it.getTotalAmount().toPlainString(), remark); + detailList.add(detail); + } + + }); + + String balance = "0"; + + if ("deposit".equals(orderInfo.getPayType())) { + TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getAmount())) { + balance = user.getAmount().toPlainString(); + } + } + if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), null, null); + String printType = "结算单"; + + if ("return".equals(orderInfo.getOrderType())) { + printType = "退款单"; + } + + + FeieyunPrintUtil.getCashPrintData(detailPO, tbPrintMachineWithBLOBs.getAddress(), printType, printType); + } + + } + } + + break; + case "one": //一菜一品 + + if (!orderInfo.getStatus().equals("unpaid")) { + return; + } + + cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "final"); + if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { + + cashierCarts.parallelStream().forEach(it -> { + + String categoryId; + if (ObjectUtil.isEmpty(it.getCategoryId())) { + categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + } else { + categoryId = it.getCategoryId(); + } + + + Long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + + if (count > 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + + + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark); + } + }); + } + break; + case "category": //分类出单 + break; + } + + break; + case "kitchen": //出品打印机 + break; + } + } + + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java index b5e93f3..25a4ef5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java @@ -15,20 +15,20 @@ import org.springframework.context.annotation.Scope; @Configuration public class RabbitConfig { - + @Value("${spring.rabbitmq.host}") private String host; - + @Value("${spring.rabbitmq.port}") private int port; - + @Value("${spring.rabbitmq.username}") private String username; - + @Value("${spring.rabbitmq.password}") private String password; - - + + @Bean public ConnectionFactory connectionFactory() { @@ -39,7 +39,7 @@ public class RabbitConfig { connectionFactory.setPublisherConfirms(true); return connectionFactory; } - + @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) //必须是prototype类型 @@ -51,12 +51,12 @@ public class RabbitConfig { public DirectExchange defaultExchange_Register() { return new DirectExchange(RabbitConstants.CART_ORDER_COLLECT_PUT); } - + @Bean public Queue queuePut_Register() { return new Queue(RabbitConstants.CART_ORDER_COLLECT_QUEUE_PUT, true); //队列持久 } - + @Bean public Binding bindingPut_Register() { return BindingBuilder.bind(queuePut_Register()).to(defaultExchange_Register()).with(RabbitConstants.CART_ORDER_COLLECT_ROUTINGKEY_PUT); @@ -142,7 +142,28 @@ public class RabbitConfig { } + // 打印出票 + @Bean + DirectExchange printExchange() { + return new DirectExchange(RabbitConstants.EXCHANGE_PRINT); + } + @Bean + Queue printDishesQueue() { + return new Queue(RabbitConstants.QUEUE_PRINT_DISHES); + } + @Bean + Binding bindingDishedPrint(Queue printDishesQueue, DirectExchange printExchange) { + return BindingBuilder.bind(printDishesQueue).to(printExchange).with(RabbitConstants.ROUTING_KEY_PRINT_DISHES); + } + @Bean + Queue printPlaceQueue() { + return new Queue(RabbitConstants.QUEUE_PRINT_PLACE); + } + @Bean + Binding bindingPlacePrint(Queue printPlaceQueue, DirectExchange printExchange) { + return BindingBuilder.bind(printPlaceQueue).to(printExchange).with(RabbitConstants.ROUTING_KEY_PRINT_PLACE); + } -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java index e0e1a0f..c506f13 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java @@ -58,4 +58,13 @@ public interface RabbitConstants { public static final String BALANCE_QUEUE_PUT="balance_queue_put"; public static final String BALANCE_ROUTINGKEY_PUT="balance_routingkey_put"; + + // 打印出票 + String EXCHANGE_PRINT = "exchange.print"; + // 菜品打印 + String QUEUE_PRINT_DISHES = "queue.dishes.print"; + String ROUTING_KEY_PRINT_DISHES = "routing.dishes.print"; + // 下单打印 + String QUEUE_PRINT_PLACE = "queue.place.order.print"; + String ROUTING_KEY_PRINT_PLACE = "routing.place.order.print"; }