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..eca7ea2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -230,7 +230,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 +245,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())).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 +270,13 @@ public class FeieyunPrintUtil { return data.toString(); } + private static String toPlainStr(String str) { + if(StrUtil.isBlank(str)){ + return "0"; + } + return new BigDecimal(str).toPlainString(); + } + public static String[] getCashPrintData(OrderDetailPO detailPO, String sn, String type, String orderType, String printerNum) { String content = buildPrintContent(detailPO, type, orderType); @@ -488,7 +495,10 @@ public class FeieyunPrintUtil { public static void main(String[] args) { //testPrint(); //testPrint2(); - testPrint3(); + String a = "12.0000"; + String s = new BigDecimal(a).toPlainString(); + System.out.println(s); + //testPrint3(); } public static void testPrint() { @@ -551,7 +561,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..0296754 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; @@ -13,7 +14,6 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -130,19 +130,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 +153,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())).toPlainString()); t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { sb.append("应退" + t + "
"); @@ -168,12 +168,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 +194,13 @@ public class PrinterUtils { } + private static String toPlainStr(String str) { + if (StrUtil.isBlank(str)) { + return "0"; + } + return new BigDecimal(str).toPlainString(); + } + public static String getCallNumPrintData(CallNumPrintPO po) { StringBuilder sb = new StringBuilder(); @@ -367,26 +374,34 @@ public class PrinterUtils { Map param = getToken(time, uuid); //参数 - MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); - multiValueMap.add("token", param.get("TOKEN")); - multiValueMap.add("devName", devName); - multiValueMap.add("actWay", actWay); - multiValueMap.add("cn", cn); - multiValueMap.add("data", data); - multiValueMap.add("voiceJson", voiceJson); - multiValueMap.add("appId", APP_ID); - multiValueMap.add("timestamp", time); - multiValueMap.add("requestId", uuid); - multiValueMap.add("userCode", USER_CODE); + //MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); + Map map = new HashMap<>(); + map.put("token", param.get("TOKEN")); + map.put("devName", devName); + map.put("money", null); + map.put("content", "收款100元"); + map.put("broadCastType", "1"); + //multiValueMap.put("actWay", actWay); + //multiValueMap.put("cn", cn); + //multiValueMap.put("data", data); + //multiValueMap.put("voiceJson", voiceJson); + map.put("appId", APP_ID); + map.put("timestamp", time); + map.put("requestId", uuid); + map.put("userCode", USER_CODE); + map.put("bizType", "2"); RestTemplate restTemplate = new RestTemplate(); HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, header); + String s = HttpUtil.get("https://ioe.car900.com/v1/openApi/dev/controlDevice.json", map, 50000); + System.out.println(s); + + HttpEntity> httpEntity = null; String httpResponse; try { - httpResponse = restTemplate.postForObject(URL_STR, - httpEntity, String.class); + httpResponse = restTemplate.getForObject("https://ioe.car900.com/v1/openApi/dev/registerCloud.json", + String.class); System.out.println("map" + httpResponse); return httpResponse; } catch (Exception e) { @@ -418,7 +433,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 +480,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<>();