diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineLog.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineLog.java index 1236732..cac85de 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineLog.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPrintMachineLog.java @@ -65,11 +65,11 @@ public class TbPrintMachineLog implements Serializable { */ private String printQty; /** - * 打印方式 normal-普通出单 one-一菜一品 callTicket-排队取号 + * 打印方式 all-全部打印 normal-仅打印结账单「前台」one-仅打印制作单「厨房」 */ private String printMethod; /** - * 打印类型 JSON数组字符串数据 1-确认退款单 2-交班单 3-排队取号,如:[1,2,3] + * 打印类型,JSON数组 refund-确认退款单 handover-交班单 queue-排队取号,如:['refund','handover','queue'] */ private String printType; /** diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopPrintLogDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopPrintLogDTO.java index 0fc219b..2293907 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopPrintLogDTO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopPrintLogDTO.java @@ -59,11 +59,11 @@ public class ShopPrintLogDTO implements Serializable { */ private String printQty; /** - * 打印方式 normal-普通出单 one-一菜一品 callTicket-排队取号 + * 打印方式 all-全部打印 normal-仅打印结账单「前台」one-仅打印制作单「厨房」 */ private String printMethod; /** - * 打印类型 JSON数组字符串数据 1-确认退款单 2-交班单 3-排队取号,如:[1,2,3] + * 打印类型,JSON数组 refund-确认退款单 handover-交班单 queue-排队取号,如:['refund','handover','queue'] */ private String printType; /** diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java index ef017a2..ac493a2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -104,7 +104,7 @@ public class PrintMechineConsumer { return; } String model = StrUtil.isEmpty(it.getPrintMethod()) ? "normal" : it.getPrintMethod(); - String printerNum = StrUtil.isEmpty(it.getPrintQty()) ? "1" : it.getPrintQty().split("^")[1]; + String printerNum = StrUtil.isEmpty(it.getPrintQty()) ? "1" : it.getPrintQty().split("\\^")[1]; List categoryInfos = JSONUtil.parseJSONStr2TList(StrUtil.emptyToDefault(it.getCategoryList(), "[]"), CategoryInfo.class); @@ -137,140 +137,144 @@ public class PrintMechineConsumer { private void yxyPrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos) { String orderId = orderInfo.getId().toString(); - - switch (tbPrintMachineWithBLOBs.getSubType()) { case "label": //标签打印机 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(), "普通打印", 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, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - } - - return; - } - - if ((!orderInfo.getStatus().equals("closed"))) { - return; - } - List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); - if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { - List detailList = new ArrayList<>(); - tbOrderDetails.stream().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); - - if (count > 0) { - 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.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); -// 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); - detailPO.setOutNumber(orderInfo.getOutNumber()); - String printType = "结算单"; - - String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - - PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); - } - } - - - break; - case "one": //一菜一品 -// if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") -// && (!orderInfo.getStatus().equals("unpaid"))) { -// return; -// } - if ("return".equals(orderInfo.getOrderType())) { - printReturnTicket(tbPrintMachineWithBLOBs, orderInfo, printerNum, categoryInfos, orderId); - return; - } else { - printTicket(Integer.valueOf(orderId), categoryInfos, tbPrintMachineWithBLOBs, orderInfo); -// printNormalTicket(tbPrintMachineWithBLOBs, orderInfo, printerNum, categoryInfos, orderId); - } - break; - case "category": //分类出单 - break; + if ("one".equals(model)) { + onlyKitchenForYxy(orderId, orderInfo, printerNum, tbPrintMachineWithBLOBs, categoryInfos); + } else if ("normal".equals(model)) { + onlyFrontDeskForYxy(orderId, orderInfo, printerNum, shopInfo, tbPrintMachineWithBLOBs, categoryInfos); + } else if ("all".equals(model)) { + onlyKitchenForYxy(orderId, orderInfo, printerNum, tbPrintMachineWithBLOBs, categoryInfos); + onlyFrontDeskForYxy(orderId, orderInfo, printerNum, shopInfo, tbPrintMachineWithBLOBs, categoryInfos); } - break; case "kitchen": //出品打印机 break; } } + /** + * 仅打印结算单「前台」 + */ + private void onlyFrontDeskForYxy(String orderId, TbOrderInfo orderInfo, String printerNum, TbShopInfo shopInfo, TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, List categoryInfos) { + 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(), "普通打印", 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, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + } + + return; + } + + if ((!orderInfo.getStatus().equals("closed"))) { + return; + } + List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); + if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { + List detailList = new ArrayList<>(); + tbOrderDetails.stream().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); + + if (count > 0) { + 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.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); +// 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); + detailPO.setOutNumber(orderInfo.getOutNumber()); + String printType = "结算单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + + PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); + } + } + } + + /** + * 仅打印制作单「厨房」 + */ + private void onlyKitchenForYxy(String orderId, TbOrderInfo orderInfo, String printerNum, TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, List categoryInfos) { + //if (StrUtil.isNotBlank(orderInfo.getUseType()) && orderInfo.getUseType().equals("postPay") + // && (!orderInfo.getStatus().equals("unpaid"))) { + // return; + //} + if ("return".equals(orderInfo.getOrderType())) { + printReturnTicket(tbPrintMachineWithBLOBs, orderInfo, printerNum, categoryInfos, orderId); + } else { + printTicket(Integer.valueOf(orderId), categoryInfos, tbPrintMachineWithBLOBs, orderInfo); + // printNormalTicket(tbPrintMachineWithBLOBs, orderInfo, printerNum, categoryInfos, orderId); + } + } + private void printTicket(Integer orderId, List categoryInfos, TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, TbOrderInfo orderInfo) { String printKey = RedisCst.ORDER_PRINT_PRO + orderId; AtomicReference> printProductSet = new AtomicReference<>(redisTemplate.opsForSet().members(printKey)); @@ -522,6 +526,157 @@ public class PrintMechineConsumer { return true; } + /** + * 仅打印结算单「前台」 + */ + private void onlyFrontDeskForFe(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String orderId) { + 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() == null ? null : orderInfo.getDiscountAmount().toPlainString(), + orderInfo.getDiscountRatio() == null ? null : 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 { + List 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); + } + + } + } + } + + /** + * 仅打印制作单「厨房」 + */ + private void onlyKitchenForFe(String orderId, TbOrderInfo orderInfo, String printerNum, TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, List categoryInfos) { + if (orderInfo.getPayType() != null + && "postPay".equals(orderInfo.getPayType()) + && !orderInfo.getStatus().equals("unpaid")) { + return; + } + + List 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); + } + }); + } + } + private void fePrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos) { String orderId = orderInfo.getId().toString(); @@ -561,157 +716,14 @@ public class PrintMechineConsumer { 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() == null ? null : orderInfo.getDiscountAmount().toPlainString(), - orderInfo.getDiscountRatio() == null ? null : 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.getPayType() != null - && "postPay".equals(orderInfo.getPayType()) - && !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; + if ("one".equals(model)) { + onlyKitchenForFe(orderId, orderInfo, printerNum, tbPrintMachineWithBLOBs, categoryInfos); + } else if ("normal".equals(model)) { + onlyFrontDeskForFe(tbPrintMachineWithBLOBs, orderInfo, shopInfo, printerNum, categoryInfos, orderId); + } else if ("all".equals(model)) { + onlyKitchenForFe(orderId, orderInfo, printerNum, tbPrintMachineWithBLOBs, categoryInfos); + onlyFrontDeskForFe(tbPrintMachineWithBLOBs, orderInfo, shopInfo, printerNum, categoryInfos, orderId); } - break; case "kitchen": //出品打印机 break; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java index badc58b..fabc045 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java @@ -1,7 +1,9 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONArray; import com.chaozhanggui.system.cashierservice.dao.TbProductMapper; import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopUserMapper; @@ -43,83 +45,110 @@ public abstract class PrinterHandler { throw new MsgException("打印机配置为空"); } List categoryInfos = JSONUtil.parseJSONStr2TList(StrUtil.emptyToDefault(machine.getCategoryList(), "[]"), CategoryInfo.class); + //仅打印后厨-一菜一品 + if ("one".equals(printMethod)) { + onlyKitchen(machine, orderInfo, tbOrderDetailList, categoryInfos, isReturn); + } else if ("normal".equals(printMethod)) { + //仅打印前台 + onlyFrontDesk(machine, orderInfo, tbOrderDetailList, isReturn); + } else if ("all".equals(printMethod)) { + //全部打印 前台+后厨 + onlyFrontDesk(machine, orderInfo, tbOrderDetailList, isReturn); + onlyKitchen(machine, orderInfo, tbOrderDetailList, categoryInfos, isReturn); + } else { + log.warn("未知打印类型: {}", printMethod); + } + if (StrUtil.isBlank(machine.getPrintType())) { + return; + } + if (!cn.hutool.json.JSONUtil.isJsonArray(machine.getPrintType())) { + return; + } + JSONArray options = cn.hutool.json.JSONUtil.parseArray(machine.getPrintType()); + List optionList = cn.hutool.json.JSONUtil.toList(options, String.class); + //是否包含排队取号 + if (!CollUtil.contains(optionList, "queue")) { + return; + } + callNumPrint(machine, printDTO); + if (StrUtil.isBlank(printMethod)) { + throw new MsgException("打印机配置为空"); + } + } - switch (printMethod) { - case "one": - tbOrderDetailList.forEach(item -> { - log.info("开始打印退单菜品,商品名:{}", item.getProductName()); - // 台位费不打印 - if (item.getProductId().equals(-999)) { - log.info("台位费商品,不打印"); - return; - } - String categoryId = tbProductMapper.selectByPrimaryKey(item.getProductId()).getCategoryId(); - TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(item.getProductSkuId()); - if (sku == null) { - log.error("商品不存在, id: {}", item.getProductSkuId()); - return; - } + /** + * 仅打印制作单「厨房」 + */ + private void onlyKitchen(TbPrintMachine machine, TbOrderInfo orderInfo, List tbOrderDetailList, List categoryInfos, boolean isReturn) { + tbOrderDetailList.forEach(item -> { + log.info("开始打印退单菜品,商品名:{}", item.getProductName()); + // 台位费不打印 + if (item.getProductId().equals(-999)) { + log.info("台位费商品,不打印"); + 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(); + long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); - if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && count == 0) { - log.warn("分类未添加菜品: {} : {}", item.getProductName(), sku.getSpecSnap()); - return; - } + if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && 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) { - returnDishesPrint(orderInfo, item, machine); - } else { - normalDishesPrint(orderInfo, item, machine); - } - }); - break; - case "normal": - if (tbOrderDetailList.isEmpty()) { - log.info("待打印列表为空"); - return; - } - List detailList = new ArrayList<>(); - tbOrderDetailList.forEach(it -> { - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(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 remark = StrUtil.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : ""; + item.setRemark(remark); + if (isReturn) { + returnDishesPrint(orderInfo, item, machine); + } else { + normalDishesPrint(orderInfo, item, machine); + } + }); + } - }); - String balance = "0"; + /** + * 仅打印结算单「前台」 + */ + private void onlyFrontDesk(TbPrintMachine machine, TbOrderInfo orderInfo, List tbOrderDetailList, boolean isReturn) { + if (tbOrderDetailList.isEmpty()) { + log.info("待打印列表为空"); + return; + } + List detailList = new ArrayList<>(); + tbOrderDetailList.forEach(it -> { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(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); - 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(); - } - } + }); + String balance = "0"; - if (!detailList.isEmpty()) { - if (isReturn) { - returnOrderPrint(orderInfo, machine, balance, detailList); + 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(); + } + } - } else { - normalOrderPrint(orderInfo, machine, balance, detailList); + if (!detailList.isEmpty()) { + if (isReturn) { + returnOrderPrint(orderInfo, machine, balance, detailList); - } - } - break; - case "callTicket": - callNumPrint(machine, printDTO); - break; - default: - log.warn("未知打印类型: {}", printMethod); + } else { + normalOrderPrint(orderInfo, machine, balance, detailList); + + } } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java index 8fd1282..322a87c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -103,7 +103,7 @@ public class CloudPrinterService { String printerNum = StrUtil.isEmpty(tbPrintMachineWithBLOBs.getPrintQty()) ? "1" : tbPrintMachineWithBLOBs.getPrintQty().split("\\^")[1]; - List categoryInfos = JSONUtil.parseJSONStr2TList(StrUtil.emptyToDefault(tbPrintMachineWithBLOBs.getCategoryList(),"[]"), CategoryInfo.class); + List categoryInfos = JSONUtil.parseJSONStr2TList(StrUtil.emptyToDefault(tbPrintMachineWithBLOBs.getCategoryList(), "[]"), CategoryInfo.class); switch (tbPrintMachineWithBLOBs.getContentType()) { case "yxyPrinter": @@ -136,232 +136,401 @@ public class CloudPrinterService { */ private Result yxyPrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre) { String orderId = orderInfo.getId().toString(); - - switch (tbPrintMachineWithBLOBs.getSubType()) { case "label": //标签打印机 break; case "cash": //小票打印机 - switch (model) { - case "normal": //普通出单 - if (!"normal".equals(type)) { - return Result.fail("非小票打印"); - } - - 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(), null, null); - detailPO.setOutNumber(orderInfo.getOutNumber()); - String printType = "退款单"; - - String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); - - - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - PrinterUtils.printTickets(voiceJson, 1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - } - - return Result.success(CodeEnum.SUCCESS); - } - - - List cashierCarts = new ArrayList<>(); - if (ispre) { - cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "create"); - } else { - 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())) { - if (ObjectUtil.isNotEmpty(orderInfo.getMemberId()) && ObjectUtil.isNotNull(orderInfo.getMemberId())) { - 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(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); - String printType = "结算单"; - - detailPO.setOutNumber(orderInfo.getOutNumber()); - if (ispre) { - printType = "预结算单"; - } - - if ("return".equals(orderInfo.getOrderType())) { - printType = "退款单"; - } - - - String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - - } - - break; - case "one": //一菜一品 - if (!"one".equals(type)) { - return Result.fail("非出品打印"); - } - - if (ispre) { - return Result.fail("预结算单不打印菜单"); - } - - - if ("return".equals(orderInfo.getOrderType())) { - List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); - if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { - details.parallelStream().forEach(it -> { - - - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - - if (count > 0) { - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); - String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); - } - String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum(), remark, null); - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; - PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - }); - } - return Result.success(CodeEnum.SUCCESS); - } else { - - 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(); - } - - - String data = PrinterUtils.getPrintData("", orderInfo.getOrderType().equals("miniapp") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark, null); - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - - PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - }); - } - } - - break; - case "category": //分类出单 - if (!"category".equals(type)) { - return Result.fail("非分类打印"); - } - break; + if ("normal".equals(model)) { + onlyFrontDeskForYxy(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else if ("one".equals(model)) { + onlyKitchenForYxy(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else if ("all".equals(model)) { + onlyFrontDeskForYxy(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + onlyKitchenForYxy(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else { + log.error("未知的打印方式"); } - break; case "kitchen": //出品打印机 break; } - return Result.success(CodeEnum.SUCCESS); } + /** + * 仅打印制作单「厨房」 + */ + private Result onlyKitchenForYxy(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre, String orderId) { + if (!"one".equals(type)) { + return Result.fail("非出品打印"); + } + + if (ispre) { + return Result.fail("预结算单不打印菜单"); + } + + + if ("return".equals(orderInfo.getOrderType())) { + List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); + if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { + details.parallelStream().forEach(it -> { + + + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + Long count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + + if (count > 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum(), remark, null); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + }); + } + return Result.success(CodeEnum.SUCCESS); + } else { + + List 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(); + } + + + String data = PrinterUtils.getPrintData("", orderInfo.getOrderType().equals("miniapp") ? + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark, null); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + + PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + }); + } + } + return Result.success(CodeEnum.SUCCESS); + } + + /** + * 仅打印结算单「前台」 + */ + private Result onlyFrontDeskForYxy(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre, String orderId) { + if (!"normal".equals(type)) { + return Result.fail("非小票打印"); + } + + 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(), null, null); + detailPO.setOutNumber(orderInfo.getOutNumber()); + String printType = "退款单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); + + + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + } + + return Result.success(CodeEnum.SUCCESS); + } + + + List cashierCarts = new ArrayList<>(); + if (ispre) { + cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "create"); + } else { + 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())) { + if (ObjectUtil.isNotEmpty(orderInfo.getMemberId()) && ObjectUtil.isNotNull(orderInfo.getMemberId())) { + 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(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); + String printType = "结算单"; + + detailPO.setOutNumber(orderInfo.getOutNumber()); + if (ispre) { + printType = "预结算单"; + } + + if ("return".equals(orderInfo.getOrderType())) { + printType = "退款单"; + } + + + String data = PrinterUtils.getCashPrintData(detailPO, printType, orderInfo.getOrderType()); + String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + + } + return Result.success(CodeEnum.SUCCESS); + } + + /** + * 仅打印结算单「前台」 + */ + private Result onlyFrontDeskForFe(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre,String orderId) { + if (!"normal".equals(type)) { + return Result.fail("非小票打印"); + } + + 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(), null, null); + + String printType = "退款单"; + + String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); +// PrinterUtils.printTickets(1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); + } + } + + return Result.success(CodeEnum.SUCCESS); + } + + + List cashierCarts = new ArrayList<>(); + if (ispre) { + cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "create"); + } else { + 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 (ispre) { + printType = "预结算单"; + } + + if ("return".equals(orderInfo.getOrderType())) { + printType = "退款单"; + } + + + FeieyunPrintUtil.getCashPrintData(detailPO, tbPrintMachineWithBLOBs.getAddress(), printType, printType); + } + + } + return Result.success(CodeEnum.SUCCESS); + } + + /** + * 仅打印制作单「厨房」 + */ + private Result onlyKitchenForFe(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre, String orderId) { + if (!"one".equals(type)) { + return Result.fail("非出品打印"); + } + + if (ispre) { + return Result.fail("预结算单不打印菜单"); + } + List 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); + } + }); + } + return Result.success(CodeEnum.SUCCESS); + } private Result fePrinter(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, String model, TbOrderInfo orderInfo, TbShopInfo shopInfo, String printerNum, List categoryInfos, String type, Boolean ispre) { String orderId = orderInfo.getId().toString(); @@ -398,168 +567,16 @@ public class CloudPrinterService { break; case "cash": //小票打印机 - switch (model) { - case "normal": //普通出单 - if (!"normal".equals(type)) { - return Result.fail("非小票打印"); - } - - 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(), null, null); - - String printType = "退款单"; - - String data = PrinterUtils.getCashPrintData(detailPO, printType, "return"); -// PrinterUtils.printTickets(1, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); - } - } - - return Result.success(CodeEnum.SUCCESS); - } - - - cashierCarts = new ArrayList<>(); - if (ispre) { - cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "create"); - } else { - 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 (ispre) { - printType = "预结算单"; - } - - if ("return".equals(orderInfo.getOrderType())) { - printType = "退款单"; - } - - - FeieyunPrintUtil.getCashPrintData(detailPO, tbPrintMachineWithBLOBs.getAddress(), printType, printType); - } - - } - - break; - case "one": //一菜一品 - if (!"one".equals(type)) { - return Result.fail("非出品打印"); - } - - if (ispre) { - return Result.fail("预结算单不打印菜单"); - } - 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": //分类出单 - if (!"category".equals(type)) { - return Result.fail("非分类打印"); - } - break; + if ("normal".equals(model)) { + onlyFrontDeskForFe(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else if ("one".equals(model)) { + onlyKitchenForFe(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else if ("all".equals(model)) { + onlyFrontDeskForFe(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + onlyKitchenForFe(tbPrintMachineWithBLOBs, model, orderInfo, shopInfo, printerNum, categoryInfos, type, ispre, orderId); + } else { + log.error("未知的打印方式"); } - break; case "kitchen": //出品打印机 break;