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 ecad5c5..fc941e2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -243,7 +243,7 @@ public class FeieyunPrintUtil { //展示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) //展示3列 b1代表名称列占用(20个字节) b2单价列(0个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,20+0+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 - String row = FeieYunUtil.getRow(productName, "", number, amount, 20, 0, 3, 6); + String row = FeieYunUtil.getRow(productName, "", " "+number, amount, 20, 0, 4, 6); data.append(row); if (StrUtil.isNotBlank(detail.getSpec())) { data.append("规格:" + detail.getSpec() + "
"); @@ -259,7 +259,7 @@ public class FeieyunPrintUtil { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 3, 6); + String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 4, 6); data.append(subRow); } } @@ -276,9 +276,9 @@ public class FeieyunPrintUtil { } else { data.append(StrUtil.format("应收:{}
", t)); } + data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); - data.append("--------------------------------
"); data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); 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 f7a5653..dd49da3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,6 +1,5 @@ package com.chaozhanggui.system.cashierservice.util; -import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -119,46 +118,29 @@ public class PrinterUtils { public static String getCashPrintData(OrderDetailPO detailPO, String type, String orderType) { - log.info("getCashPrintData detailPO:{},type:{},orderType:{}", JSONUtil.toJSONString(detailPO), type, orderType); - StringBuilder sb = new StringBuilder(); - - sb.append("").append(detailPO.getMerchantName()).append("

"); - sb.append("").append(type).append("【").append(detailPO.getMasterId()).append("】

"); - if (Objects.nonNull(detailPO.getOutNumber())) { - sb.append("").append(detailPO.getOutNumber()).append("

"); - } - - sb.append("订单号: ").append(detailPO.getOrderNo()).append("
"); - sb.append("交易时间: ").append(detailPO.getTradeDate()).append("
"); - sb.append("收银员: ").append(detailPO.getOperator()).append("


"); - char paddingCharacter = ' '; - sb.append("").append(String.format("%-15s", "品名").replace(' ', paddingCharacter)).append(String.format("%-4s", "数量").replace(' ', paddingCharacter)).append(String.format("%4s", "小计").replace(' ', paddingCharacter)).append("
"); - sb.append("------------------------
"); + StringBuffer data = new StringBuffer(); + data.append(StrUtil.format("{}
", detailPO.getMerchantName())); + data.append("
"); + data.append(""); + data.append(StrUtil.format("{}【{}】
", type, detailPO.getMasterId())); + //if (Objects.nonNull(detailPO.getOutNumber())) { + // data.append(StrUtil.format("{}",detailPO.getOutNumber())); + //} + data.append(""); + data.append("
"); + data.append(StrUtil.format("订单号:{}
", detailPO.getOrderNo())); + data.append(StrUtil.format("交易时间:{}
", detailPO.getTradeDate())); + data.append(StrUtil.format("收银员:{}
", detailPO.getOperator())); + data.append(""); + data.append("
"); + data.append("品名 数量 小计
"); + data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - detail.setNumber(Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString()); - if (detail.getProductName().length() > 4 && detail.getProductName().length() <= 10) { - - 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", 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", 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", 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", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); - } - - if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { - sb.append("规格:").append(detail.getSpec()).append("
"); + String row = YunXiangYinUtil.getRow(detail.getProductName(), "", " " + detail.getNumber(), toPlainStr(detail.getAmount()), 20, 0, 4, 6); + data.append(row); + if (StrUtil.isNotBlank(detail.getSpec())) { + data.append("规格:").append(detail.getSpec()).append("
"); } String proGroupInfo = detail.getProGroupInfo(); if (StrUtil.isBlank(proGroupInfo)) { @@ -171,52 +153,38 @@ public class PrinterUtils { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = YunXiangYinUtil.getRow(" - "+proName, "", qty+"", "0.00", 18, 0, 6, 4); - sb.append(subRow); + String subRow = YunXiangYinUtil.getRow(" - "+proName, "", " "+qty, "0.00", 20, 0, 4, 6); + data.append(subRow); } } - if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { - sb.append("------------------------
"); - 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("
")); + data.append("--------------------------------
"); + data.append(StrUtil.format("原价:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("折扣:-{}
", toPlainStr(detailPO.getDiscountAmount()))); } - - - sb.append("------------------------
"); + data.append("--------------------------------
"); 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 + "
"); + data.append("应退" + t + "
"); + data.append(StrUtil.format("应收:{}
", t)); } else { - sb.append("实付" + t + "
"); - + data.append(StrUtil.format("应收:{}
", t)); } + data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - sb.append("储值¥" + toPlainStr(detailPO.getReceiptsAmount()) + "
"); - sb.append("------------------------
"); - sb.append("积分:" + detailPO.getIntegral() + "
"); + data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } - - sb.append("余额:" + toPlainStr(detailPO.getBalance()) + "
"); - sb.append("------------------------
"); - - if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { - sb.append("备注:" + detailPO.getRemark() + "
"); - } - - + data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); + data.append("--------------------------------
"); + data.append(StrUtil.format("备注:{}
", detailPO.getRemark())); if (Objects.nonNull(detailPO.getOutNumber())) { - sb.append("".concat(detailPO.getOutNumber()).concat("
")); + data.append("".concat(detailPO.getOutNumber()).concat("
")); } - - - sb.append("打印时间:" + DateUtils.getTime(new Date()) + "
"); - - sb.append(""); - sb.append(""); - return sb.toString(); - + data.append("打印时间:" + DateUtils.getTime(new Date()) + "
"); + data.append(""); + data.append(""); + return data.toString(); } private static String toPlainStr(String str) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java index b93ca4e..dbf403f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java @@ -30,10 +30,10 @@ public class YunXiangYinUtil { public static String getStringByEnter(int length, String string) throws Exception { for (int i = 1; i <= string.length(); i++) { if (string.substring(0, i).getBytes("GBK").length > length) { - return " " + string.substring(0, i - 1) + "
" + getStringByEnter(length, string.substring(i - 1)); + return "" + string.substring(0, i - 1) + "
" + getStringByEnter(length, string.substring(i - 1)); } } - return " " + string + ""; + return "" + string + ""; } public static String addSpace(String str, int size) { @@ -128,7 +128,7 @@ public class YunXiangYinUtil { list = getStrList(title, b1 / 2); } String s0 = titleAddSpace(list.get(0), b1); - title = "" + s0 + otherStr + "
";// 添加 单价 数量 总额 + title = ""+s0 + otherStr + "
";// 添加 单价 数量 总额 String s = ""; for (int k = 1; k < list.size(); k++) { s += list.get(k);