From 2f8e70ad2884d2b6b7443dfae0af11ae9cfc8b99 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 28 二月 2025 17:44:10 +0800 Subject: [PATCH] bug修改 --- common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java | 241 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 218 insertions(+), 23 deletions(-) diff --git a/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java b/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java index 8bb4526..10a2731 100644 --- a/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java +++ b/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java @@ -15,6 +15,7 @@ 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; @@ -112,7 +113,51 @@ tAddOptometryVO.setTime("2025-11-11 11:11:11"); tAddOptometryVO.setPhone("19983174515"); tAddOptometryVO.setSn("922440578"); - String method = print(tAddOptometryVO); + List<TOrderGoodsPrintVO> 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); @@ -340,31 +385,33 @@ Comparator.comparingInt(TOptometryDetailVO::getType) .thenComparingInt(TOptometryDetailVO::getStatus).reversed() ); + for (TOptometryDetailVO s : optometryDetailVOS) { switch (s.getType()){ case 3: if (s.getStatus()==2){ content.append("<BOLD>旧镜信息<BR>"); content.append("R:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("瞳距:"+s.getPupilDistance()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+"<BR>"); }else if (s.getStatus()==1){ content.append("L:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("瞳距:"+s.getPupilDistance()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+"<BR>"); content.append("--------------------------------<BR>"); } break; case 2: + if (s.getStatus()==2){ content.append("完全矫正<BR>"); content.append("R:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("瞳距:"+s.getPupilDistance()+" 矫正:"+s.getCorrect()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); }else if (s.getStatus()==1){ content.append("L:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("瞳距:"+s.getPupilDistance()+" 矫正:"+s.getCorrect()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); content.append("--------------------------------<BR>"); } break; @@ -372,14 +419,14 @@ if (s.getStatus()==2){ content.append("配镜处方<BR>"); content.append("R:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("ADD:"+s.getAddS()+" 瞳距:"+s.getPupilDistance()+" 瞳高:"+s.getPupilHeight()+"<BR>"); - content.append("矫正:"+s.getCorrect()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"<BR>"); + content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); }else if (s.getStatus()==1){ content.append("L:<BR>"); - content.append("度数:"+s.getBallMirror()+" 散光:"+s.getColumnMirror()+" 轴位:"+s.getAxis()+"<BR>"); - content.append("ADD:"+s.getAddS()+" 瞳距:"+s.getPupilDistance()+" 瞳高:"+s.getPupilHeight()+"<BR>"); - content.append("矫正:"+s.getCorrect()+"<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"<BR>"); + content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); content.append("--------------------------------<BR>"); } break; @@ -387,15 +434,15 @@ } content.append("</BOLD>"); //通过POST请求,发送打印信息到服务器 - RequestConfig requestConfig = RequestConfig.custom() - .setSocketTimeout(30000)//读取超时 + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); - + CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) - .build(); - + .build(); + HttpPost post = new HttpPost(URL); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("user",USER)); @@ -406,7 +453,7 @@ 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 @@ -415,7 +462,7 @@ response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if(statecode == 200){ - HttpEntity httpentity = response.getEntity(); + HttpEntity httpentity = response.getEntity(); if (httpentity != null){ //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); @@ -446,7 +493,155 @@ } } return unescapeUnicode(result); - + + } + public static String printMatch(TAddOptometryVO dto){ + //标签说明: + //单标签: + //"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果) + //"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令 + //成对标签: + //"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍 + //<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐 + //拼凑订单内容时可参考如下格式 + //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式 + + StringBuilder content; + content=new StringBuilder("<BOLD>"); + content.append("隼目加工单<BR>"); + content.append(dto.getShopName()).append("<BR>"); + content.append("订单时间:").append(dto.getTime()).append("<BR>"); + content.append("--------------------------------<BR>"); + content.append("加工编号:").append("<BR>"); + content.append("<CB>"); + content.append(dto.getMachiningCode()).append("</CB>").append("<BR>"); + content.append("--------------------------------<BR>"); + List<TOptometryDetailVO> 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("配镜处方<BR>"); + content.append("R:<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"<BR>"); + content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); + }else if (s.getStatus()==1){ + content.append("L:<BR>"); + content.append("度数:"+(s.getBallMirror()==null?"-":s.getBallMirror())+" 散光:"+(s.getColumnMirror()==null?"-":s.getColumnMirror())+" 轴位:"+(s.getAxis()==null?"-":s.getAxis())+"<BR>"); + content.append("ADD:"+(s.getAddS()==null?"-":s.getAddS())+" 瞳距:"+(s.getPupilDistance()==null?"-":s.getPupilDistance())+" 瞳高:"+(s.getPupilHeight()==null?"-":s.getPupilHeight())+"<BR>"); + content.append("矫正:"+(s.getCorrect()==null?"-":s.getCorrect())+"<BR>"); + content.append("--------------------------------<BR>"); + } + break; + } + } + content.append("订单详情:").append("<BR>"); + List<TOrderGoodsPrintVO> orderGoods = dto.getOrderGoods(); + List<TOrderGoodsPrintVO> 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("<BR>"); + 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("<BR>"); + 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("<BR>"); + continue; + } + } + content.append("客户电话:").append(dto.getPhone()==null?"-":dto.getPhone()).append("<BR>"); + content.append("备注:").append(dto.getRemark()==null?"-":dto.getRemark()).append("<BR>"); + content.append("</BOLD>"); + + //通过POST请求,发送打印信息到服务器 + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(30000)//读取超时 + .setConnectTimeout(30000)//连接超时 + .build(); + + CloseableHttpClient httpClient = HttpClients.custom() + .setDefaultRequestConfig(requestConfig) + .build(); + + HttpPost post = new HttpPost(URL); + List<NameValuePair> nvps = new ArrayList<NameValuePair>(); + 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); + } -- Gitblit v1.7.1