package com.jilongda.common.Ticket; import cn.hutool.crypto.digest.DigestUtil; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Component; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TicketUtil { public static final String URL = "http://api.feieyun.cn/Api/Open/";//不需要修改 public static final String USER = "yanduyanjing@163.com";//*必填*:账号名 public static final String UKEY = "C8cNbhZ63YWtQDGQ";//*必填*: 飞鹅云后台注册账号后生成的UKEY 【备注:这不是填打印机的KEY】 public static final String SN = "*********";//*必填*:打印机编号,必须要在管理后台里添加打印机或调用API接口添加之后,才能调用API //**********测试时,打开下面注释掉方法的即可,更多接口文档信息,请访问官网开放平台查看********** public static void main(String[] args) throws Exception{ //==================添加打印机接口(支持批量)================== //***返回值JSON字符串*** //正确例子:{"msg":"ok","ret":0,"data":{"ok":["sn#key#remark#carnum","316500011#abcdefgh#快餐前台"],"no":["316500012#abcdefgh#快餐前台#13688889999 (错误:识别码不正确)"]},"serverExecutedTime":3} //错误:{"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37} //提示:打印机编号(必填) # 打印机识别码(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n)添加新打印机信息,每次最多100行(台)。 // String snlist = "922440578#XZacTCZT#测试添加打印机"; // String method = addprinter(snlist); // System.out.println(method); // String snlist = "922440578#XZacTCZT#测试添加打印机"; // String method = editprinter("922440578","修改名称"); // System.out.println(method); TAddOptometryVO tAddOptometryVO = new TAddOptometryVO(); List temp = new ArrayList<>(); TOptometryDetailVO t1 = new TOptometryDetailVO(); t1.setType(3); t1.setBallMirror(-1.00D); t1.setColumnMirror(-0.10D); t1.setAxis("30"); t1.setPupilDistance("33"); t1.setStatus(1); temp.add(t1); TOptometryDetailVO t2 = new TOptometryDetailVO(); t2.setType(3); t2.setBallMirror(-1.00D); t2.setColumnMirror(-0.10D); t2.setAxis("30"); t2.setPupilDistance("33"); t2.setStatus(2); temp.add(t2); TOptometryDetailVO t3 = new TOptometryDetailVO(); t3.setType(2); t3.setBallMirror(-1.00D); t3.setColumnMirror(-0.10D); t3.setAxis("30"); t3.setPupilDistance("33"); t3.setCorrect("1.0"); t3.setStatus(1); temp.add(t3); TOptometryDetailVO t4 = new TOptometryDetailVO(); t4.setType(2); t4.setBallMirror(-1.00D); t4.setColumnMirror(-0.10D); t4.setAxis("30"); t4.setPupilDistance("33"); t4.setCorrect("1.0"); t4.setStatus(2); temp.add(t4); TOptometryDetailVO t5 = new TOptometryDetailVO(); t5.setType(1); t5.setBallMirror(-1.00D); t5.setColumnMirror(-0.10D); t5.setAxis("30"); t5.setAddS("50"); t5.setPupilHeight("50"); t5.setPupilDistance("33"); t5.setCorrect("1.0"); t5.setStatus(1); temp.add(t5); TOptometryDetailVO t6 = new TOptometryDetailVO(); t6.setType(1); t6.setBallMirror(-1.00D); t6.setColumnMirror(-0.10D); t6.setAxis("30"); t6.setAddS("50"); t6.setPupilHeight("50"); t6.setPupilDistance("33"); t6.setCorrect("1.0"); t6.setStatus(2); temp.add(t6); tAddOptometryVO.setOptometryDetailVOS(temp); tAddOptometryVO.setShopName("天府新谷门店"); tAddOptometryVO.setOptometristName("无关风月"); tAddOptometryVO.setTime("2025-11-11 11:11:11"); tAddOptometryVO.setPhone("19983174515"); tAddOptometryVO.setSn("922440578"); List tOrderGoodsPrintVOS = new ArrayList<>(); TOrderGoodsPrintVO tOrderGoodsPrintVO1 = new TOrderGoodsPrintVO(); tOrderGoodsPrintVO1.setColor("颜色"); tOrderGoodsPrintVO1.setRLens("右边"); tOrderGoodsPrintVO1.setType(0); tOrderGoodsPrintVO1.setRefractiveIndex("1.66"); tOrderGoodsPrintVO1.setBrandName("平拍"); tOrderGoodsPrintVO1.setSeriesName("系列"); tOrderGoodsPrintVO1.setModelId(0); tOrderGoodsPrintVO1.setStatus(0); tOrderGoodsPrintVO1.setGoodsMoney(new BigDecimal("1")); tOrderGoodsPrintVO1.setCost(new BigDecimal("2")); tOrderGoodsPrintVO1.setConstConfirm(new BigDecimal("3")); tOrderGoodsPrintVO1.setRightLens("又"); TOrderGoodsPrintVO tOrderGoodsPrintVO2 = new TOrderGoodsPrintVO(); tOrderGoodsPrintVO2.setColor("颜色"); tOrderGoodsPrintVO2.setLLens("左边"); tOrderGoodsPrintVO2.setType(0); tOrderGoodsPrintVO2.setRefractiveIndex("1.66"); tOrderGoodsPrintVO2.setBrandName("平拍"); tOrderGoodsPrintVO2.setSeriesName("系列"); tOrderGoodsPrintVO2.setModelId(0); tOrderGoodsPrintVO2.setStatus(0); tOrderGoodsPrintVO2.setGoodsMoney(new BigDecimal("1")); tOrderGoodsPrintVO2.setCost(new BigDecimal("2")); tOrderGoodsPrintVO2.setConstConfirm(new BigDecimal("3")); tOrderGoodsPrintVO2.setLeftLens("左边"); TOrderGoodsPrintVO tOrderGoodsPrintVO3 = new TOrderGoodsPrintVO(); tOrderGoodsPrintVO3.setColor("颜色"); tOrderGoodsPrintVO3.setType(0); tOrderGoodsPrintVO3.setBrandName("平拍"); tOrderGoodsPrintVO3.setModelName("型号"); tOrderGoodsPrintVO3.setModelId(0); tOrderGoodsPrintVO3.setStatus(0); tOrderGoodsPrintVO3.setGoodsMoney(new BigDecimal("1")); tOrderGoodsPrintVO3.setCost(new BigDecimal("2")); tOrderGoodsPrintVO3.setConstConfirm(new BigDecimal("3")); tOrderGoodsPrintVO3.setMaterial("材质"); tOrderGoodsPrintVOS.add(tOrderGoodsPrintVO1); tOrderGoodsPrintVOS.add(tOrderGoodsPrintVO2); tOrderGoodsPrintVOS.add(tOrderGoodsPrintVO3); tAddOptometryVO.setOrderGoods(tOrderGoodsPrintVOS); // String method = print(tAddOptometryVO); String method = printMatch(tAddOptometryVO); System.out.println(method); //==================方法1.小票机打印订单接口================== //***返回值JSON字符串*** //成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5} //失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} // String method1 = print(SN);//该接口只能是小票机使用,如购买的是标签机请使用下面方法2,调用打印 // System.out.println(method1); //==================方法2.标签机专用打印订单接口================== //***返回值JSON字符串*** //成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5} //失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} // String method2 = printLabelMsg(SN);//打开注释调用标签机打印接口进行打印,该接口只能是标签机使用,其它型号打印机请勿使用该接口 // System.out.println(method2); //===========方法3.查询某订单是否打印成功============= //***返回值JSON字符串*** //成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":2}//data:true为已打印,false为未打印 //失败:{"msg":"错误描述","ret":非0, "data":null,"serverExecutedTime":7} // String orderid = "xxxxxxx_xxxxxxxx_xxxxxxxx";//订单ID,从方法1返回值data获取 // String method3 = queryOrderState(orderid); // System.out.println(method3); //===========方法4.查询指定打印机某天的订单详情============ //***返回值JSON字符串*** //成功:{"msg":"ok","ret":0,"data":{"print":6,"waiting":1},"serverExecutedTime":9}//print已打印,waiting为打印 //失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} // String strdate = "2016-11-12";//注意时间格式为"yyyy-MM-dd" // String method4 = queryOrderInfoByDate(SN,strdate); // System.out.println(method4); //===========方法5.查询打印机的状态========================== //***返回值JSON字符串*** //成功:{"msg":"ok","ret":0,"data":"状态","serverExecutedTime":4} //失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} // String method5 = queryPrinterStatus(SN); // System.out.println(method5); } public static String unescapeUnicode(String input) { Pattern pattern = Pattern.compile("\\\\u([0-9a-fA-F]{4})"); Matcher matcher = pattern.matcher(input); StringBuffer sb = new StringBuffer(); while (matcher.find()) { int codePoint = Integer.parseInt(matcher.group(1), 16); matcher.appendReplacement(sb, String.valueOf((char) codePoint)); } matcher.appendTail(sb); return sb.toString(); } //=====================以下是函数实现部分================================================ public static String addprinter(String snlist){ //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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_printerAddlist"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("printerContent",snlist)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } // 解析JSON字符串 return unescapeUnicode(result); } public static String editprinter(String sn,String name){ //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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_printerEdit"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn",sn)); nvps.add(new BasicNameValuePair("name",name)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return unescapeUnicode(result); } //方法1 public static String print(TAddOptometryVO dto){ //标签说明: //单标签: //"
"为换行,""为切刀指令(主动切纸,仅限切刀打印机使用才有效果) //""为打印LOGO指令(前提是预先在机器内置LOGO图片),""为钱箱或者外置音响指令 //成对标签: //""为居中放大一倍,""为放大一倍,""为居中,字体变高一倍 //字体变宽一倍,""为二维码,""为字体加粗,""为右对齐 //拼凑订单内容时可参考如下格式 //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式 StringBuilder content; content=new StringBuilder(""); content.append("隼目验光单
"); content.append(dto.getShopName()).append("
"); content.append("验光师:").append(dto.getOptometristName()).append("
"); content.append("验光时间:").append(dto.getTime()).append("
"); content.append("--------------------------------
"); content.append("客户电话:").append(dto.getPhone()).append("
"); content.append("--------------------------------
"); List optometryDetailVOS = dto.getOptometryDetailVOS(); // 使用 List.sort 和 Comparator 进行多字段倒序排序 optometryDetailVOS.sort( Comparator.comparingInt(TOptometryDetailVO::getType) .thenComparingInt(TOptometryDetailVO::getStatus).reversed() ); for (TOptometryDetailVO s : optometryDetailVOS) { switch (s.getType()){ case 3: if (s.getStatus()==2){ content.append("旧镜信息
"); content.append("R:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+"
"); }else if (s.getStatus()==1){ content.append("L:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+"
"); content.append("--------------------------------
"); } break; case 2: if (s.getStatus()==2){ content.append("完全矫正
"); content.append("R:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); }else if (s.getStatus()==1){ content.append("L:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); content.append("--------------------------------
"); } break; case 1: if (s.getStatus()==2){ content.append("配镜处方
"); content.append("R:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"
"); content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); }else if (s.getStatus()==1){ content.append("L:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"
"); content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); content.append("--------------------------------
"); } break; } } content.append("
"); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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",dto.getSn())); nvps.add(new BasicNameValuePair("content", content.toString())); nvps.add(new BasicNameValuePair("times","1"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return unescapeUnicode(result); } public static String printMatch(TAddOptometryVO dto){ //标签说明: //单标签: //"
"为换行,""为切刀指令(主动切纸,仅限切刀打印机使用才有效果) //""为打印LOGO指令(前提是预先在机器内置LOGO图片),""为钱箱或者外置音响指令 //成对标签: //""为居中放大一倍,""为放大一倍,""为居中,字体变高一倍 //字体变宽一倍,""为二维码,""为字体加粗,""为右对齐 //拼凑订单内容时可参考如下格式 //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式 StringBuilder content; content=new StringBuilder(""); content.append("隼目加工单
"); content.append(dto.getShopName()).append("
"); content.append("订单时间:").append(dto.getTime()).append("
"); content.append("--------------------------------
"); content.append("加工编号:").append("
"); content.append(""); content.append(dto.getMachiningCode()).append("").append("
"); content.append("--------------------------------
"); List optometryDetailVOS = dto.getOptometryDetailVOS(); // 使用 List.sort 和 Comparator 进行多字段倒序排序 optometryDetailVOS.sort( Comparator.comparingInt(TOptometryDetailVO::getType) .thenComparingInt(TOptometryDetailVO::getStatus).reversed() ); for (TOptometryDetailVO s : optometryDetailVOS) { switch (s.getType()){ case 1: if (s.getStatus()==2){ content.append("配镜处方
"); content.append("R:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"
"); content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); }else if (s.getStatus()==1){ content.append("L:
"); content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"
"); content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"
"); content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"
"); content.append("--------------------------------
"); } break; } } content.append("订单详情:").append("
"); List orderGoods = dto.getOrderGoods(); List tOrderGoodsPrintVOS = new ArrayList<>(); for (TOrderGoodsPrintVO orderGood : orderGoods) { if (orderGood.getModelId()!=null){ tOrderGoodsPrintVOS.add(orderGood); break; } } for (TOrderGoodsPrintVO orderGood : orderGoods) { if (orderGood.getRLens()!=null){ tOrderGoodsPrintVOS.add(orderGood); break; } } for (TOrderGoodsPrintVO orderGood : orderGoods) { if (orderGood.getLLens()!=null){ tOrderGoodsPrintVOS.add(orderGood); break; } } for (TOrderGoodsPrintVO tOrderGoodsPrintVO : tOrderGoodsPrintVOS) { if (tOrderGoodsPrintVO.getModelId()!=null){ content.append("镜架:").append(tOrderGoodsPrintVO.getBrandName()==null?" "+"-":tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getMaterial()==null?" "+"-":tOrderGoodsPrintVO.getMaterial()+"-").append(tOrderGoodsPrintVO.getModelName()==null?" "+"-":tOrderGoodsPrintVO.getModelName()).append("
"); continue; } if (tOrderGoodsPrintVO.getRLens()!=null){ content.append("右眼镜片:").append(tOrderGoodsPrintVO.getBrandName()==null?" "+"-":tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getSeriesName()==null?" "+"-":tOrderGoodsPrintVO.getSeriesName()+"-").append(tOrderGoodsPrintVO.getRefractiveIndex()==null?" "+"-":tOrderGoodsPrintVO.getRefractiveIndex()).append("
"); continue; } if (tOrderGoodsPrintVO.getLLens()!=null){ content.append("左眼镜片:").append(tOrderGoodsPrintVO.getBrandName()==null?" "+"-":tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getSeriesName()==null?" "+"-":tOrderGoodsPrintVO.getSeriesName()+"-").append(tOrderGoodsPrintVO.getRefractiveIndex()==null?" "+"-":tOrderGoodsPrintVO.getRefractiveIndex()).append("
"); continue; } } content.append("客户电话:").append(dto.getPhone()==null?"-":dto.getPhone()).append("
"); content.append("备注:").append(dto.getRemark()==null?"-":dto.getRemark()).append("
"); content.append("
"); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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",dto.getSn())); nvps.add(new BasicNameValuePair("content", content.toString())); nvps.add(new BasicNameValuePair("times","1"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return unescapeUnicode(result); } //方法2 public static String printLabelMsg(String sn){ String content; content = "1";//设定打印时出纸和打印字体的方向,n 0 或 1,每次设备重启后都会初始化为 0 值设置,1:正向出纸,0:反向出纸, content += "#001 五号桌 1/3可乐鸡翅张三先生 13800138000";//40mm宽度标签纸打印例子,打开注释调用标签打印接口打印 //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } //方法3 public static String queryOrderState(String orderid){ //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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_queryOrderState"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("orderid",orderid)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } //方法4 public static String queryOrderInfoByDate(String sn,String strdate){ //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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_queryOrderInfoByDate"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn",sn)); nvps.add(new BasicNameValuePair("date",strdate));//yyyy-MM-dd格式 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } //方法5 public static String queryPrinterStatus(String sn){ //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); 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_queryPrinterStatus"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn",sn)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } //生成签名字符串 public static String signature(String USER,String UKEY,String STIME){ String s = DigestUtil.sha1Hex(USER+UKEY+STIME); return s; } }