From 11ec1c23a9f47ed70b124e413e33e3696897390f Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 14 二月 2025 15:04:41 +0800
Subject: [PATCH] bug修改

---
 optometrist/src/main/java/com/jilongda/optometrist/model/TTicket.java     |    2 
 common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java           |  262 +++++++++++++++++++++++++++++-------
 manage/src/main/java/com/jilongda/manage/controller/TOrderController.java |   51 ++++++
 common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java      |    6 
 common/src/main/java/com/jilongda/common/Ticket/TOrderGoodsPrintVO.java   |   74 ++++++++++
 5 files changed, 334 insertions(+), 61 deletions(-)

diff --git a/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java b/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java
index e37e48e..5581721 100644
--- a/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java
+++ b/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java
@@ -15,6 +15,8 @@
     private Integer id;
     @ApiModelProperty(value = "验光单详情")
     private List<TOptometryDetailVO> optometryDetailVOS;
+    @ApiModelProperty(value = "商品列表")
+    private List<TOrderGoodsPrintVO> orderGoods;
     @ApiModelProperty(value = "门店名称")
     private String shopName;
     @ApiModelProperty(value = "验光师名称")
@@ -25,4 +27,8 @@
     private String phone;
     @ApiModelProperty(value = "小票机编号")
     private String sn;
+    @ApiModelProperty(value = "备注")
+    private String remark;
+    @ApiModelProperty(value = "加工编号")
+    private String machiningCode;
 }
diff --git a/common/src/main/java/com/jilongda/common/Ticket/TOrderGoodsPrintVO.java b/common/src/main/java/com/jilongda/common/Ticket/TOrderGoodsPrintVO.java
new file mode 100644
index 0000000..9c95277
--- /dev/null
+++ b/common/src/main/java/com/jilongda/common/Ticket/TOrderGoodsPrintVO.java
@@ -0,0 +1,74 @@
+package com.jilongda.common.Ticket;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 销售订单表
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="TOrderGoods对象", description="销售订单商品详情表")
+public class TOrderGoodsPrintVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键id")
+    private Integer id;
+
+    @ApiModelProperty(value = "订单id")
+    private Integer orderId;
+
+    @ApiModelProperty(value = "色号")
+    private String color;
+
+    @ApiModelProperty(value = "镜片右 球镜+柱镜 逗号拼接 字段为空 客户自带")
+    private String rLens;
+
+    @ApiModelProperty(value = "镜片左 球镜+柱镜 逗号拼接 字段为空 客户自带")
+    private String lLens;
+
+    @ApiModelProperty(value = "1球 2非球面 3双非")
+    private Integer type;
+
+    @ApiModelProperty(value = "折射率")
+    private String refractiveIndex;
+
+    @ApiModelProperty(value = "品牌名称")
+    private String brandName;
+
+    @ApiModelProperty(value = "镜片-系列名称")
+    private String seriesName;
+
+    @ApiModelProperty(value = "镜架-型号名称")
+    private String modelName;
+    @ApiModelProperty(value = "镜架型号id 前端忽略")
+    private Integer modelId;
+    @ApiModelProperty(value = "类型 1镜架 2镜片")
+    private Integer status;
+
+    @ApiModelProperty(value = "商品价格")
+    private BigDecimal goodsMoney;
+    @ApiModelProperty(value = "系统成本价")
+    private BigDecimal cost;
+    @ApiModelProperty(value = "核算成本价")
+    private BigDecimal constConfirm;
+    @ApiModelProperty(value = "镜片右 球镜+柱镜")
+    private String rightLens;
+
+    @ApiModelProperty(value = "镜片左 球镜+柱镜")
+    private String leftLens;
+
+    @ApiModelProperty(value = "材质")
+    private String material;
+}
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..b62f028 100644
--- a/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java
+++ b/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java
@@ -51,58 +51,58 @@
 			List<TOptometryDetailVO> 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.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.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.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.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.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.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);
 
@@ -340,31 +340,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 +374,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 +389,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 +408,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 +417,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 +448,159 @@
 	    	   }
 	       }
 			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>");
+//							(s.getAddS()==null?"-":s.getAddS())
+//							(s.getPupilDistance()==null?"-":s.getPupilDistance())
+//
+//							(s.getCorrect()==null?"-":s.getCorrect())
+//							(s.getBallMirror()==null?"-":s.getBallMirror())
+//							(s.getColumnMirror()==null?"-":s.getColumnMirror())
+//							(s.getAxis()==null?"-":s.getAxis())
+//							(s.getAddS()==null?"-":s.getAddS())
+//							(s.getPupilDistance()==null?"-":s.getPupilDistance())
+//							(s.getPupilHeight()==null?"-":s.getPupilHeight())
+//							(s.getCorrect()==null?"-":s.getCorrect())
+							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);
+				}
+			}
+			for (TOrderGoodsPrintVO orderGood : orderGoods) {
+				if (orderGood.getRLens()!=null){
+					tOrderGoodsPrintVOS.add(orderGood);
+				}
+			}
+			for (TOrderGoodsPrintVO orderGood : orderGoods) {
+				if (orderGood.getLLens()!=null){
+					tOrderGoodsPrintVOS.add(orderGood);
+				}
+			}
+			for (TOrderGoodsPrintVO tOrderGoodsPrintVO : tOrderGoodsPrintVOS) {
+				if (tOrderGoodsPrintVO.getModelId()!=null){
+					content.append("镜架:").append(tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getMaterial()+"-").append(tOrderGoodsPrintVO.getModelName()).append("<BR>");
+				}
+				if (tOrderGoodsPrintVO.getRLens()!=null){
+					content.append("右眼镜片:").append(tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getSeriesName()+"-").append(tOrderGoodsPrintVO.getRefractiveIndex()).append("<BR>");
+				}
+				if (tOrderGoodsPrintVO.getModelId()!=null){
+					content.append("左眼镜片:").append(tOrderGoodsPrintVO.getBrandName()+"-").append(tOrderGoodsPrintVO.getSeriesName()+"-").append(tOrderGoodsPrintVO.getRefractiveIndex()).append("<BR>");
+				}
+			}
+			content.append("客户电话:").append(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);
+
 		}
 		
 		
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java b/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
index d75ff74..b977a7c 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
@@ -2,6 +2,9 @@
 
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.jilongda.common.Ticket.TAddOptometryVO;
+import com.jilongda.common.Ticket.TOrderGoodsPrintVO;
+import com.jilongda.common.Ticket.TicketUtil;
 import com.jilongda.common.basic.ApiResult;
 import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.authority.model.SecUser;
@@ -14,12 +17,10 @@
 import com.jilongda.manage.service.*;
 import com.jilongda.manage.utils.LoginInfoUtil;
 import com.jilongda.manage.utils.OssUploadUtil;
-import com.jilongda.manage.vo.TModelVO;
-import com.jilongda.manage.vo.TOptometryVO;
-import com.jilongda.manage.vo.TOrderListVO;
-import com.jilongda.manage.vo.TOrderVO;
+import com.jilongda.manage.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
@@ -28,6 +29,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -178,7 +180,8 @@
 
         return ApiResult.success(tCouponReceives);
     }
-
+    @Autowired
+    private TTicketService tTicketService;
     @ApiOperation(value = "添加订单")
     @PostMapping(value = "/addOrder")
     public ApiResult addOrder(@RequestBody TOrderDTO dto) {
@@ -228,7 +231,7 @@
                         .eq(split.length>=2,TLensGoods::getColumnMirror, split[1])
                         .one();
                 if (one!=null){
-                    if (one.getTotal()-1<0){
+                    if (one.getTotal()-1<0 && lensSeries.getType()==1 ){
                         return ApiResult.failed("库存不足");
                     }
                     // 减少对应库存
@@ -369,6 +372,42 @@
         orderGoodsService.saveBatch(orderGoods);
         lensGoodsService.updateBatchById(tLensGoods);
         frameGoodsService.updateBatchById(tFrameGoods);
+        TAddOptometryVO tAddOptometryVO = new TAddOptometryVO();
+        TTicket tTicket = tTicketService.lambdaQuery().eq(TTicket::getStoreId, dto.getStoreId())
+                .eq(TTicket::getType,1)
+                .eq(TTicket::getStatus, 1).list().stream().findFirst().orElse(null);
+        if (tTicket==null){
+            return ApiResult.failed("当前门店未绑定小票机");
+        }
+        tAddOptometryVO.setSn(tTicket.getCloudId()+"");
+        tAddOptometryVO.setPhone(dto.getPhone());
+        List<TOrderGoods> orderGoods1 = dto.getOrderGoods();
+        ArrayList<TOrderGoodsPrintVO> tOrderGoodsPrintVOS = new ArrayList<>();
+        // 复制
+        for (TOrderGoods orderGood : orderGoods1) {
+            TOrderGoodsPrintVO tOrderGoodsPrintVO = new TOrderGoodsPrintVO();
+            BeanUtils.copyProperties(orderGood,tOrderGoodsPrintVO);
+            if (orderGood.getModelId()!=null){
+                TModel byId = modelService.getById(orderGood.getModelId());
+                if (byId!=null){
+                    TMaterial byId1 = materialService.getById(byId.getMaterialId());
+                    if (byId1!=null){
+                        tOrderGoodsPrintVO.setMaterial(byId1.getName());
+                    }
+                }
+            }
+            tOrderGoodsPrintVOS.add(tOrderGoodsPrintVO);
+        }
+        tAddOptometryVO.setOrderGoods(tOrderGoodsPrintVOS);
+        tAddOptometryVO.setRemark(dto.getRemark());
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = simpleDateFormat.format(new Date());
+        tAddOptometryVO.setTime(format);
+        tAddOptometryVO.setMachiningCode(dto.getMachiningCode());
+        if (dto.getIsMachining()==1){
+            // 打印加工单
+            TicketUtil.printMatch(tAddOptometryVO);
+        }
         return ApiResult.success(dto.getId());
     }
 
diff --git a/optometrist/src/main/java/com/jilongda/optometrist/model/TTicket.java b/optometrist/src/main/java/com/jilongda/optometrist/model/TTicket.java
index 64bfd82..66013d3 100644
--- a/optometrist/src/main/java/com/jilongda/optometrist/model/TTicket.java
+++ b/optometrist/src/main/java/com/jilongda/optometrist/model/TTicket.java
@@ -33,7 +33,7 @@
 
     @ApiModelProperty(value = "小票机名称")
     @TableField("name")
-    private Integer name;
+    private String name;
 
     @ApiModelProperty(value = "类型 1验光单 2加工单")
     @TableField("type")

--
Gitblit v1.7.1