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 ec321b7..033da91 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -180,7 +180,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); @@ -228,7 +228,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); } }); @@ -285,14 +285,21 @@ public class PrintMechineConsumer { // 重置打印数据 redisTemplate.delete(printKey); if (!tbOrderDetails.isEmpty()) { - tbOrderDetails.forEach(it -> { + tbOrderDetails.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { log.info("开始打印一菜一品票据,:{}", it.getProductName()); - String categoryId = tbProductMapper.selectByPrimaryKey(it.getProductId()).getCategoryId(); - - long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); + long count; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + count = 1; + } else { + String categoryId = tbProductMapper.selectByPrimaryKey(it.getProductId()).getCategoryId(); + count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + } log.info("获取当前类别是否未打印类别:{}", count); if (count > 0) { // 统计已打数量 @@ -320,10 +327,12 @@ public class PrintMechineConsumer { log.info("已打印数量, {}, 未打印数量: {}", info, printerNum); - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); + if(it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // 将已打印信息加入redis @@ -494,17 +503,27 @@ public class PrintMechineConsumer { private void printReturnTicket(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, TbOrderInfo orderInfo, String printerNum, List categoryInfos, String orderId) { 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(); + details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { + long count = 0; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + }else{ + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + 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(); + if (it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // todo 修改为bigdecimal @@ -556,7 +575,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); @@ -657,8 +676,7 @@ public class PrintMechineConsumer { List cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { - cashierCarts.parallelStream().forEach(it -> { - + cashierCarts.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId; if (ObjectUtil.isEmpty(it.getCategoryId())) { categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index 6845d98..506c928 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -64,13 +64,12 @@ public class FeiPrinter extends PrinterHandler { @Override protected void normalDishesPrint(TbOrderInfo orderInfo, TbOrderDetail orderDetail, TbPrintMachine machine) { TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(orderDetail.getProductSkuId()); - if (sku == null) { + if (sku == null && orderDetail.getIsTemporary() == 0) { log.warn("打印菜品票失败 sku商品不存在: {}", orderDetail); return; } - String remark = sku.getSpecSnap(); + String remark = sku == null ? "" : sku.getSpecSnap(); // todo 修改为bigdecimal - String[] resp = FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), remark); shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); 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 62cad14..b533e7f 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 @@ -83,12 +83,16 @@ public abstract class PrinterHandler { * 仅打印制作单「厨房」 */ private void onlyKitchen(TbPrintMachine machine, TbOrderInfo orderInfo, List tbOrderDetailList, List categoryInfos, boolean isReturn) { - tbOrderDetailList.forEach(item -> { + tbOrderDetailList.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(item -> { log.info("开始打印退单菜品,商品名:{}", item.getProductName()); Integer isTemporary = ObjectUtil.defaultIfNull(item.getIsTemporary(), 0); String categoryId = "0"; if (isTemporary == 1) { item.setProductId(0); + item.setProductSkuId(0); + if(!item.getProductName().startsWith("【临】")){ + item.setProductName("【临】" + item.getProductName()); + } } // 台位费不打印 if (item.getProductId().equals(-999)) { @@ -97,13 +101,15 @@ public abstract class PrinterHandler { } TbProduct product = tbProductMapper.selectByPrimaryKey(item.getProductId()); - if(isTemporary == 0) { + if (isTemporary == 0) { categoryId = product.getCategoryId(); } TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(item.getProductSkuId()); if (isTemporary == 0 && sku == null) { log.error("商品不存在, id: {}", item.getProductSkuId()); return; + } else if(isTemporary == 1){ + sku = new TbProductSkuWithBLOBs(); } if (StrUtil.isEmpty(machine.getClassifyPrint())) { log.error("分类打印是空, classifyPrint: {}", machine.getClassifyPrint()); @@ -113,7 +119,7 @@ public abstract class PrinterHandler { long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(finalCategoryId) ).count(); - if(isTemporary == 0) { + if (isTemporary == 1) { count = 1; } if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && count == 0) { @@ -143,16 +149,16 @@ public abstract class PrinterHandler { tbOrderDetailList.forEach(it -> { Integer isTemporary = ObjectUtil.defaultIfNull(it.getIsTemporary(), 0); String remark = ""; - if(isTemporary == 0){ + if (isTemporary == 0) { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } } - if(isTemporary == 1) { - it.setProductName("【临时菜】"+it.getProductName()); + if (isTemporary == 1) { + it.setProductName("【临】" + it.getProductName()); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); 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 5b3bfa2..b2bb441 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -175,19 +175,27 @@ public class CloudPrinterService { if ("return".equals(orderInfo.getOrderType())) { List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { - details.parallelStream().forEach(it -> { + details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { + long count = 0; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + } else { + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + } - 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(); + if (it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // todo 修改为bigdecimal @@ -509,7 +517,7 @@ public class CloudPrinterService { List cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { - cashierCarts.parallelStream().forEach(it -> { + cashierCarts.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId; if (ObjectUtil.isEmpty(it.getCategoryId())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index 9aa3d32..83287f6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -27,6 +27,7 @@ import org.apache.http.util.EntityUtils; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; @Slf4j @@ -230,7 +231,7 @@ public class FeieyunPrintUtil { for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { String productName = detail.getProductName(); String number = detail.getNumber(); - String amount = detail.getAmount(); + String amount = toPlainStr(detail.getAmount()); //58mm的机器,一行打印16个汉字,32个字母; 80mm的机器,一行打印24个汉字,48个字母 //展示4列 b1代表名称列占用(14个字节) b2单价列(6个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,14+6+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 //String row = FeieYunUtil.getRow(productName, "",number, amount, 14, 6,3, 6) @@ -245,22 +246,22 @@ public class FeieyunPrintUtil { log.error("打印数据>>>>>>>>>>>>>>>>>>>>>:{}{}", detailPO.getDiscountAmount(), detailPO.getDiscountAdio()); if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { data.append("--------------------------------
"); - data.append(StrUtil.format("原价:{}
", detailPO.getReceiptsAmount())); - data.append(StrUtil.format("折扣:-{}
", NumberUtil.null2Zero(new BigDecimal(detailPO.getDiscountAmount())).toPlainString())); + data.append(StrUtil.format("原价:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("折扣:-{}
", toPlainStr(detailPO.getDiscountAmount()))); } data.append("--------------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? detailPO.getReceiptsAmount() : new BigDecimal(detailPO.getReceiptsAmount()).subtract(new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).setScale(2, RoundingMode.DOWN).toPlainString()); if (orderType.equals("return")) { data.append(StrUtil.format("应退:{}
", t)); } else { data.append(StrUtil.format("应收:{}
", t)); } if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - data.append(StrUtil.format("储值:{}
", detailPO.getReceiptsAmount())); + data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); data.append("--------------------------------
"); data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } - data.append(StrUtil.format("余额:{}
", detailPO.getBalance())); + data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { data.append(StrUtil.format("备注:{}
", detailPO.getRemark())); @@ -270,6 +271,13 @@ public class FeieyunPrintUtil { return data.toString(); } + private static String toPlainStr(String str) { + if (StrUtil.isBlank(str)) { + return "0"; + } + return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); + } + public static String[] getCashPrintData(OrderDetailPO detailPO, String sn, String type, String orderType, String printerNum) { String content = buildPrintContent(detailPO, type, orderType); @@ -488,7 +496,12 @@ public class FeieyunPrintUtil { public static void main(String[] args) { //testPrint(); //testPrint2(); - testPrint3(); + String a = "12.0000"; + String s = new BigDecimal(a).setScale(2, RoundingMode.DOWN).toPlainString(); + System.out.println(s); + String s1 = toPlainStr(a); + System.out.println(s1); + //testPrint3(); } public static void testPrint() { @@ -551,7 +564,4 @@ public class FeieyunPrintUtil { System.out.println(UnicodeUtil.toString(resp)); } - - - } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 731ac72..15c7830 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.util; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; @@ -18,6 +19,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** @@ -87,12 +89,12 @@ public class PrinterUtils { builder.append("时间: ").append(date).append("


"); remark = StrUtil.emptyToDefault(remark, ""); if (productName.length() > 4 || remark.length() > 4) { - builder.append("").append(productName).append(" ").append(number).append("
"); + builder.append("").append(productName).append(" x ").append(number).append("
"); if (StrUtil.isNotBlank(remark)) { builder.append("").append(remark).append("
"); } } else { - builder.append("").append(productName).append(" ").append(number).append("
"); + builder.append("").append(productName).append(" x ").append(number).append("
"); if (StrUtil.isNotBlank(remark)) { builder.append("").append(remark).append("
"); } @@ -130,19 +132,19 @@ public class PrinterUtils { int count = getProducrName(detail.getProductName()); if (count <= 0) { int length = 15 - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } else { int length = 15 + count - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } } else if (detail.getProductName().length() > 10) { sb.append("").append(detail.getProductName()).append("
"); - sb.append("").append(String.format("%20s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%11s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%20s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%11s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } else { - sb.append("").append(String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { @@ -153,13 +155,13 @@ public class PrinterUtils { if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { sb.append("------------------------
"); - sb.append("原价:".concat(String.format("%15s", detailPO.getReceiptsAmount()).replace(' ', paddingCharacter)).concat("
")); - sb.append("折扣: ".concat(String.format("%15s", "-".concat(new BigDecimal(detailPO.getDiscountAmount()).toPlainString())).replace(' ', paddingCharacter)).concat("
")); + sb.append("原价:".concat(String.format("%15s", toPlainStr(detailPO.getReceiptsAmount())).replace(' ', paddingCharacter)).concat("
")); + sb.append("折扣: ".concat(String.format("%15s", "-".concat(toPlainStr(detailPO.getDiscountAmount()))).replace(' ', paddingCharacter)).concat("
")); } sb.append("------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? detailPO.getReceiptsAmount() : new BigDecimal(detailPO.getReceiptsAmount()).subtract(new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).setScale(2, RoundingMode.DOWN).toPlainString()); t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { sb.append("应退" + t + "
"); @@ -168,12 +170,12 @@ public class PrinterUtils { } if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - sb.append("储值¥" + detailPO.getReceiptsAmount() + "
"); + sb.append("储值¥" + toPlainStr(detailPO.getReceiptsAmount()) + "
"); sb.append("------------------------
"); sb.append("积分:" + detailPO.getIntegral() + "
"); } - sb.append("余额:" + detailPO.getBalance() + "
"); + sb.append("余额:" + toPlainStr(detailPO.getBalance()) + "
"); sb.append("------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { @@ -194,6 +196,13 @@ public class PrinterUtils { } + private static String toPlainStr(String str) { + if (StrUtil.isBlank(str)) { + return "0"; + } + return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); + } + public static String getCallNumPrintData(CallNumPrintPO po) { StringBuilder sb = new StringBuilder(); @@ -383,20 +392,10 @@ public class PrinterUtils { header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, header); - String httpResponse; - try { - httpResponse = restTemplate.postForObject(URL_STR, - httpEntity, String.class); - System.out.println("map" + httpResponse); - return httpResponse; - } catch (Exception e) { - if (StrUtil.containsAny(e.getMessage(), "timed out")) { - log.error("请求云享印超时,请稍后再试"); - httpResponse = "{\"code\":-1, \"msg\":\"请求云享印超时,请稍后再试\"}"; - } else { - httpResponse = "{\"code\":-2, \"msg\":\"请求云享印出错,请稍后再试\"}"; - } - } + String httpResponse = restTemplate.postForObject(URL_STR, + httpEntity, String.class); + + System.out.println("map" + httpResponse); return httpResponse; } @@ -418,7 +417,7 @@ public class PrinterUtils { * 检查打印状态 * * @param devName 设备名称,(唯一) 对应配置表中的address字段即(IP地址/打印机编号) - * @param taskId 打印任务id,用于复查打印状态,云想印=orderId + * @param taskId 打印任务id,用于复查打印状态,云想印=orderId * @return */ public static String checkPrintStatus(String devName, String taskId) { @@ -465,7 +464,11 @@ public class PrinterUtils { } public static void main(String[] args) throws Exception { - + String str = "{\"bizType\":\"2\",\"broadCastType\":\"1\",\"money\":\"10000000\"}"; + printTickets(str, 2, 1, "BSJQG01YJ0001", null); + if (1 == 1) { + return; + } // List payInfos = new ArrayList<>(); diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 1bf154a..be823f4 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -543,11 +543,13 @@ group by shop_id,product_id +