From ed2f5763ceadf2b316c6bbea3aa0df856b2cb581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 10 Oct 2024 18:28:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E5=B0=8F=E7=A5=A8=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E8=AE=B0=E5=BD=95=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/print/FeiPrinter.java | 15 +- .../rabbit/print/LocalLabelPrinter.java | 15 +- .../service/impl/ShopPrintLogServiceImpl.java | 42 ++- .../cashierservice/util/FeieyunPrintUtil.java | 355 +++++++++++------- 4 files changed, 282 insertions(+), 145 deletions(-) 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 8139b6e..3e539c0 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 @@ -10,11 +10,13 @@ import com.chaozhanggui.system.cashierservice.model.OrderDetailPO; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderInfoMapper; import com.chaozhanggui.system.cashierservice.mybatis.MpShopInfoMapper; +import com.chaozhanggui.system.cashierservice.service.ShopPrintLogService; import com.chaozhanggui.system.cashierservice.util.DateUtils; import com.chaozhanggui.system.cashierservice.util.FeieyunPrintUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.Date; import java.util.List; @@ -27,6 +29,9 @@ public class FeiPrinter extends PrinterHandler{ private final MPOrderDetailMapper mPOrderDetailMapper; private final TbProductSkuMapper tbProductSkuMapper; + @Resource + private ShopPrintLogService shopPrintLogService; + public FeiPrinter(TbProductMapper productMapper, TbProductSkuMapper tbProductSkuMapper, TbShopUserMapper tbShopUserMapper, MPOrderInfoMapper mPOrderInfoMapper, MpShopInfoMapper mpShopInfoMapper, MpShopInfoMapper mpShopInfoMapper1, MPOrderDetailMapper mPOrderDetailMapper) { super("fePrinter", productMapper, tbProductSkuMapper, tbShopUserMapper); this.mPOrderInfoMapper = mPOrderInfoMapper; @@ -49,9 +54,9 @@ public class FeiPrinter extends PrinterHandler{ return; } String remark = sku.getSpecSnap(); - FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo.getMasterId(), + String[] resp = FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum(), remark); - + shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); } @Override @@ -64,7 +69,8 @@ public class FeiPrinter extends PrinterHandler{ (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; - FeieyunPrintUtil.getCashPrintData(detailPO, machine.getAddress(), printType, printType); + String[] resp = FeieyunPrintUtil.getCashPrintData(detailPO, machine.getAddress(), printType, printType); + shopPrintLogService.save(machine, "退款单", resp[0], resp[1]); } @Override @@ -77,7 +83,8 @@ public class FeiPrinter extends PrinterHandler{ (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), null, null); String printType = "结算单"; - FeieyunPrintUtil.getCashPrintData(detailPO, machine.getAddress(), printType, printType); + String[] resp = FeieyunPrintUtil.getCashPrintData(detailPO, machine.getAddress(), printType, printType); + shopPrintLogService.save(machine, "结算单", resp[0], resp[1]); } @Override diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java index 679c70b..5985e43 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java @@ -1,20 +1,22 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; -import cn.hutool.core.util.ObjectUtil; import com.chaozhanggui.system.cashierservice.dao.TbProductMapper; import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopUserMapper; -import com.chaozhanggui.system.cashierservice.entity.*; +import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; +import com.chaozhanggui.system.cashierservice.entity.TbPrintMachine; +import com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs; import com.chaozhanggui.system.cashierservice.entity.dto.CallNumPrintDTO; import com.chaozhanggui.system.cashierservice.model.OrderDetailPO; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; -import com.chaozhanggui.system.cashierservice.mybatis.MPOrderInfoMapper; -import com.chaozhanggui.system.cashierservice.mybatis.MpShopInfoMapper; +import com.chaozhanggui.system.cashierservice.service.ShopPrintLogService; import com.chaozhanggui.system.cashierservice.util.DateUtils; import com.chaozhanggui.system.cashierservice.util.FeieyunPrintUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.Date; import java.util.List; @@ -24,6 +26,8 @@ public class LocalLabelPrinter extends PrinterHandler{ private final MPOrderDetailMapper mPOrderDetailMapper; private final TbProductSkuMapper tbProductSkuMapper; + @Resource + private ShopPrintLogService shopPrintLogService; public LocalLabelPrinter(TbProductMapper productMapper, TbProductSkuMapper tbProductSkuMapper, TbShopUserMapper tbShopUserMapper, MPOrderDetailMapper mPOrderDetailMapper) { super("local", productMapper, tbProductSkuMapper, tbShopUserMapper); @@ -44,8 +48,9 @@ public class LocalLabelPrinter extends PrinterHandler{ return; } for (int i = 0; i < orderDetail.getNum(); i++) { - FeieyunPrintUtil.printLabelMsg(machine.getAddress(), orderInfo.getTableName(), orderDetail.getProductName(), + String[] resp = FeieyunPrintUtil.printLabelMsg(machine.getAddress(), orderInfo.getTableName(), orderDetail.getProductName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), sku.getSalePrice().toPlainString(), sku.getSpecSnap()); + shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ShopPrintLogServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ShopPrintLogServiceImpl.java index f260bec..1a7f938 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ShopPrintLogServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ShopPrintLogServiceImpl.java @@ -13,6 +13,7 @@ import com.chaozhanggui.system.cashierservice.entity.TbPrintMachine; import com.chaozhanggui.system.cashierservice.entity.TbPrintMachineLog; import com.chaozhanggui.system.cashierservice.entity.dto.ShopPrintLogDTO; import com.chaozhanggui.system.cashierservice.service.ShopPrintLogService; +import com.chaozhanggui.system.cashierservice.util.FeieyunPrintUtil; import com.chaozhanggui.system.cashierservice.util.PrinterUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -94,6 +95,7 @@ public class ShopPrintLogServiceImpl extends ServiceImpl yxxStatusMap = MapUtil.builder(0, "离线(设备上线后自动补打)").put(1, "在线").put(2, "获取失败").put(3, "未激活").put(4, "设备已禁用").build(); // 云想印 if ("yxyPrinter".equals(config.getContentType())) { @@ -110,12 +112,26 @@ public class ShopPrintLogServiceImpl extends ServiceImpl1"); sb.append(""); sb.append(masterId); @@ -50,7 +51,7 @@ public class FeieyunPrintUtil { sb.append("¥"); sb.append(money); - String content=sb.toString(); + String content = sb.toString(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() @@ -64,37 +65,33 @@ public class FeieyunPrintUtil { HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); - nvps.add(new BasicNameValuePair("user",USER)); - String STIME = String.valueOf(System.currentTimeMillis()/1000); - nvps.add(new BasicNameValuePair("stime",STIME)); - nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME))); - nvps.add(new BasicNameValuePair("apiname","Open_printLabelMsg"));//固定值,不需要修改 - nvps.add(new BasicNameValuePair("sn",sn)); - nvps.add(new BasicNameValuePair("content",content)); - nvps.add(new BasicNameValuePair("times","1"));//打印联数 + nvps.add(new BasicNameValuePair("user", USER)); + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + nvps.add(new BasicNameValuePair("stime", STIME)); + nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); + nvps.add(new BasicNameValuePair("apiname", "Open_printLabelMsg"));//固定值,不需要修改 + nvps.add(new BasicNameValuePair("sn", sn)); + nvps.add(new BasicNameValuePair("content", content)); + nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; - try - { - post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); + try { + post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); - if(statecode == 200){ + if (statecode == 200) { HttpEntity httpentity = response.getEntity(); - if (httpentity != null){ + if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } - } - catch (Exception e) - { + } catch (Exception e) { e.printStackTrace(); - } - finally{ + } finally { try { - if(response!=null){ + if (response != null) { response.close(); } } catch (IOException e) { @@ -111,31 +108,32 @@ public class FeieyunPrintUtil { e.printStackTrace(); } } - return result; + return new String[]{content, result}; } - - - public static String getPrintData(String sn,String pickupNumber,String date,String productName,Integer number,String remark) { + public static String buildPrintContent(String pickupNumber, String date, String productName, Integer number, String remark) { StringBuilder builder = new StringBuilder(); - builder.append(""+pickupNumber+"

"); - builder.append("时间: "+date+"


"); + builder.append("" + pickupNumber + "

"); + builder.append("时间: " + date + "


"); - if(productName.length()>4||remark.length()>4){ - builder.append(""+productName+" "+number+"

"); - builder.append(""+remark+"
"); - }else { - builder.append(""+productName+" "+number+"

"); - builder.append(""+remark+"
"); + if (productName.length() > 4 || remark.length() > 4) { + builder.append("" + productName + " " + number + "

"); + builder.append("" + remark + "
"); + } else { + builder.append("" + productName + " " + number + "

"); + builder.append("" + remark + "
"); } builder.append("





"); builder.append(""); + return builder.toString(); + } - String content=builder.toString(); + public static String[] getPrintData(String sn, String pickupNumber, String date, String productName, Integer number, String remark) { + String content = buildPrintContent(pickupNumber, date, productName, number, remark); System.out.println("content:".concat(content)); @@ -151,38 +149,34 @@ public class FeieyunPrintUtil { HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); - nvps.add(new BasicNameValuePair("user",USER)); - String STIME = String.valueOf(System.currentTimeMillis()/1000); - nvps.add(new BasicNameValuePair("stime",STIME)); - nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME))); - nvps.add(new BasicNameValuePair("apiname","Open_printMsg"));//固定值,不需要修改 - nvps.add(new BasicNameValuePair("sn",sn)); - nvps.add(new BasicNameValuePair("content",content)); - nvps.add(new BasicNameValuePair("times","1"));//打印联数 + nvps.add(new BasicNameValuePair("user", USER)); + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + nvps.add(new BasicNameValuePair("stime", STIME)); + nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); + nvps.add(new BasicNameValuePair("apiname", "Open_printMsg"));//固定值,不需要修改 + nvps.add(new BasicNameValuePair("sn", sn)); + nvps.add(new BasicNameValuePair("content", content)); + nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; - try - { - post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); + try { + post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); - if(statecode == 200){ + if (statecode == 200) { HttpEntity httpentity = response.getEntity(); - if (httpentity != null){ + if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); System.out.println("result:".concat(result)); } } - } - catch (Exception e) - { + } catch (Exception e) { e.printStackTrace(); - } - finally{ + } finally { try { - if(response!=null){ + if (response != null) { response.close(); } } catch (IOException e) { @@ -199,78 +193,71 @@ public class FeieyunPrintUtil { e.printStackTrace(); } } - return result; + return new String[]{content, result}; } - - - - - - - public static String getCashPrintData(OrderDetailPO detailPO,String sn, String type, String orderType){ + public static String[] getCashPrintData(OrderDetailPO detailPO, String sn, String type, String orderType) { StringBuilder sb = new StringBuilder(); - sb.append(""+detailPO.getMerchantName()+"

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

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


"); + sb.append("" + detailPO.getMerchantName() + "

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

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


"); sb.append("------------------------
"); char paddingCharacter = ' '; - sb.append(""+String.format("%-15s","品名").replace(' ', paddingCharacter)+String.format("%-4s","数量").replace(' ', paddingCharacter)+String.format("%4s","小计").replace(' ', paddingCharacter)+"
"); + sb.append("" + String.format("%-15s", "品名").replace(' ', paddingCharacter) + String.format("%-4s", "数量").replace(' ', paddingCharacter) + String.format("%4s", "小计").replace(' ', paddingCharacter) + "
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - if(detail.getProductName().length()>4){ + if (detail.getProductName().length() > 4) { - int count=getProducrName(detail.getProductName()); - if(count<=0){ - int length=15-(detail.getProductName().length()-4); - sb.append(""+String.format("%-"+length+"s",detail.getProductName()).replace(' ', paddingCharacter)+String.format("%-4s",detail.getNumber()).replace(' ', paddingCharacter)+String.format("%8s",detail.getAmount()).replace(' ', paddingCharacter)+"
"); - }else { - int length=15+count-(detail.getProductName().length()-4); - sb.append(""+String.format("%-"+length+"s",detail.getProductName()).replace(' ', paddingCharacter)+String.format("%-4s",detail.getNumber()).replace(' ', paddingCharacter)+String.format("%8s",detail.getAmount()).replace(' ', paddingCharacter)+"
"); + int count = getProducrName(detail.getProductName()); + if (count <= 0) { + int length = 15 - (detail.getProductName().length() - 4); + sb.append("" + String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter) + String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter) + String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter) + "
"); + } else { + int length = 15 + count - (detail.getProductName().length() - 4); + sb.append("" + String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter) + String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter) + String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter) + "
"); } - }else { - sb.append(""+String.format("%-15s",detail.getProductName()).replace(' ', paddingCharacter)+String.format("%-4s",detail.getNumber()).replace(' ', paddingCharacter)+String.format("%8s",detail.getAmount()).replace(' ', paddingCharacter)+"
"); + } else { + sb.append("" + String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter) + String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter) + String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter) + "
"); } - if(detail.getSpec()!=null&& ObjectUtil.isNotEmpty(detail.getSpec())){ - sb.append("规格:"+detail.getSpec()+"
"); + if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { + sb.append("规格:" + detail.getSpec() + "
"); } sb.append("
"); } sb.append("------------------------
"); - String t="¥"+detailPO.getReceiptsAmount(); - t=String.format("%11s",t).replace(' ', paddingCharacter); - if(orderType.equals("return")){ - sb.append("应退"+t+"
"); - }else { - sb.append("应收"+t+"
"); + String t = "¥" + detailPO.getReceiptsAmount(); + t = String.format("%11s", t).replace(' ', paddingCharacter); + if (orderType.equals("return")) { + sb.append("应退" + t + "
"); + } else { + sb.append("应收" + t + "
"); } - if(ObjectUtil.isNotEmpty(detailPO.getPayType())&&ObjectUtil.isNotNull(detailPO.getPayType())&&detailPO.getPayType().equals("deposit")){ - sb.append("储值¥"+detailPO.getReceiptsAmount()+"
"); + if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { + sb.append("储值¥" + detailPO.getReceiptsAmount() + "
"); sb.append("------------------------
"); - sb.append("积分:"+detailPO.getIntegral()+"
"); + sb.append("积分:" + detailPO.getIntegral() + "
"); } - sb.append("余额:"+detailPO.getBalance()+"
"); + sb.append("余额:" + detailPO.getBalance() + "
"); sb.append("------------------------
"); - if(ObjectUtil.isNotEmpty(detailPO.getRemark())&&ObjectUtil.isNotNull(detailPO.getRemark())){ - sb.append("备注:"+detailPO.getRemark()+"
"); + if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { + sb.append("备注:" + detailPO.getRemark() + "
"); } - - sb.append("打印时间:"+DateUtils.getTime(new Date())+"
"); + sb.append("打印时间:" + DateUtils.getTime(new Date()) + "
"); sb.append(""); - String content=sb.toString(); + String content = sb.toString(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() @@ -284,37 +271,33 @@ public class FeieyunPrintUtil { HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); - nvps.add(new BasicNameValuePair("user",USER)); - String STIME = String.valueOf(System.currentTimeMillis()/1000); - nvps.add(new BasicNameValuePair("stime",STIME)); - nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME))); - nvps.add(new BasicNameValuePair("apiname","Open_printMsg"));//固定值,不需要修改 - nvps.add(new BasicNameValuePair("sn",sn)); - nvps.add(new BasicNameValuePair("content",content)); - nvps.add(new BasicNameValuePair("times","1"));//打印联数 + nvps.add(new BasicNameValuePair("user", USER)); + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + nvps.add(new BasicNameValuePair("stime", STIME)); + nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); + nvps.add(new BasicNameValuePair("apiname", "Open_printMsg"));//固定值,不需要修改 + nvps.add(new BasicNameValuePair("sn", sn)); + nvps.add(new BasicNameValuePair("content", content)); + nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; - try - { - post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); + try { + post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); - if(statecode == 200){ + if (statecode == 200) { HttpEntity httpentity = response.getEntity(); - if (httpentity != null){ + if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } - } - catch (Exception e) - { + } catch (Exception e) { e.printStackTrace(); - } - finally{ + } finally { try { - if(response!=null){ + if (response != null) { response.close(); } } catch (IOException e) { @@ -331,18 +314,16 @@ public class FeieyunPrintUtil { e.printStackTrace(); } } - return result; + return new String[]{content, result}; } - - - public static int getProducrName(String str){ + public static int getProducrName(String str) { int count = 0; - int digitCount=0; - for (int i=0;i='a' && str.charAt(i)<='z') || (str.charAt(i)>='A' && str.charAt(i)<='Z')){ + int digitCount = 0; + for (int i = 0; i < str.length(); i++) { + if ((str.charAt(i) >= 'a' && str.charAt(i) <= 'z') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z')) { count++; } @@ -350,20 +331,130 @@ public class FeieyunPrintUtil { digitCount++; } } - return count+digitCount; + return count + digitCount; } - private static String signature(String USER,String UKEY,String STIME){ - String s = DigestUtils.sha1Hex(USER+UKEY+STIME); + private static String signature(String USER, String UKEY, String STIME) { + String s = DigestUtils.sha1Hex(USER + UKEY + STIME); return s; } + /** + * 检查飞鹅打印机是否在线 + * @param sn 设备编号 + * @return 在线,工作状态正常。/离线。/未知错误 + */ + public static String checkOnline(String sn){ + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + Map paramMap = new HashMap<>(); + paramMap.put("user", USER); + paramMap.put("stime", STIME); + paramMap.put("sig", signature(USER, UKEY, STIME)); + paramMap.put("apiname", "Open_queryPrinterStatus"); + paramMap.put("sn", sn); + String msg; + try { + String resp = HttpUtil.post(URL, paramMap, 1000 * 5); + //成功 开机 {"msg":"ok","ret":0,"data":"在线,工作状态正常。","serverExecutedTime":4} + //成功 离线 {"msg":"ok","ret":0,"data":"离线。","serverExecutedTime":7} + JSONObject json = JSONUtil.parseObj(UnicodeUtil.toString(resp)); + msg = json.getStr("data"); + }catch (Exception e){ + msg = "未知错误"; + } + return msg; + } - public static void main(String[] args){ - -// OrderDetailPO detailPO=new OrderDetailPO("牛叉闪闪",null,null,"DD20240312142156962",null,null,null,null,null,null,null,null); -// getCashPrintData(detailPO,"922690786","结算单",null); + /** + * 检查飞鹅打印机打印任务是否已打印 + * @param printOrderId 打印订单编号 + * @return null-未知错误,true-已打印,false-未打印 + */ + public static Boolean checkPrintStatus(String printOrderId){ + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + Map paramMap = new HashMap<>(); + paramMap.put("user", USER); + paramMap.put("stime", STIME); + paramMap.put("sig", signature(USER, UKEY, STIME)); + paramMap.put("apiname", "Open_queryOrderState"); + paramMap.put("orderid", printOrderId); + Boolean ret; + try { + String resp = HttpUtil.post(URL, paramMap, 1000 * 5); + //成功 {"msg":"ok","ret":0,"data":true,"serverExecutedTime":4} + //失败 {"msg":"ok","ret":0,"data":false,"serverExecutedTime":4} + JSONObject json = JSONUtil.parseObj(UnicodeUtil.toString(resp)); + ret = json.getBool("data"); + }catch (Exception e){ + ret = null; + } + return ret; } + public static void main(String[] args) { + //testPrint(); + //testPrint2(); + testPrint3(); + } + + public static void testPrint(){ + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + Map paramMap = new HashMap<>(); + // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 + paramMap.put("user", USER); + paramMap.put("stime", STIME); + paramMap.put("sig", signature("chaozhanggui2022@163.com", "UfWkhXxSkeSSscsU", STIME)); + paramMap.put("apiname", "Open_printMsg"); + paramMap.put("sn", "922690786"); + paramMap.put("content", content); + paramMap.put("times", 1); + //paramMap.put("debug", "1"); + String resp = HttpUtil.post(URL, paramMap, 1000 * 5); + //成功 开机和关机都会响应成功,只是打印任务已正确下发,不代表打印成功 + //{"msg":"ok","ret":0,"data":"922690786_20241010174146_2050070451","serverExecutedTime":4} data是打印订单id + //失败1 {"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37} + System.out.println(UnicodeUtil.toString(resp)); + } + + /** + * 查询打印机状态 + */ + public static void testPrint2(){ + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + Map paramMap = new HashMap<>(); + // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 + paramMap.put("user", USER); + paramMap.put("stime", STIME); + paramMap.put("sig", signature("chaozhanggui2022@163.com", "UfWkhXxSkeSSscsU", STIME)); + paramMap.put("apiname", "Open_queryPrinterStatus"); + paramMap.put("sn", "922690786"); + //paramMap.put("debug", "1"); + String resp = HttpUtil.post(URL, paramMap, 1000 * 5); + //成功 开机 {"msg":"ok","ret":0,"data":"在线,工作状态正常。","serverExecutedTime":4} + //成功 离线 {"msg":"ok","ret":0,"data":"离线。","serverExecutedTime":7} + System.out.println(UnicodeUtil.toString(resp)); + } + + /** + * 查询打印任务是否打印成功 + */ + public static void testPrint3(){ + String STIME = String.valueOf(System.currentTimeMillis() / 1000); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + Map paramMap = new HashMap<>(); + // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 + paramMap.put("user", USER); + paramMap.put("stime", STIME); + paramMap.put("sig", signature("chaozhanggui2022@163.com", "UfWkhXxSkeSSscsU", STIME)); + paramMap.put("apiname", "Open_queryOrderState"); + paramMap.put("orderid", "922690786_20241010175946_1576957351x"); + //paramMap.put("debug", "1"); + String resp = HttpUtil.post(URL, paramMap, 1000 * 5); + //成功 {"msg":"ok","ret":0,"data":true,"serverExecutedTime":4} + //失败 {"msg":"ok","ret":0,"data":false,"serverExecutedTime":4} + System.out.println(UnicodeUtil.toString(resp)); + } }