From 18bdff5e42bc010f71d4a0820707e29b4c8500f9 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 20 一月 2025 11:32:31 +0800
Subject: [PATCH] bug修改
---
common/lib/jna-platform-4.1.0.jar | 0
common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java | 28 +
common/lib/commons-logging-1.2.jar | 0
common/lib/httpclient-cache-4.5.2.jar | 0
common/lib/fluent-hc-4.5.2.jar | 0
common/lib/httpclient-win-4.5.2.jar | 0
common/lib/jna-4.1.0.jar | 0
common/src/main/java/com/jilongda/common/Ticket/TOptometryDetailVO.java | 5
optometrist/pom.xml | 27 +
/dev/null | 18 -
common/lib/httpclient-4.5.2.jar | 0
manage/src/main/java/com/jilongda/manage/controller/TCouponController.java | 131 ++++++
common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java | 730 ++++++++++++++++++++++++++++++++++++++++
optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java | 31 +
common/lib/httpmime-4.5.2.jar | 0
common/pom.xml | 70 +++
common/lib/httpcore-4.4.4.jar | 0
common/lib/commons-codec-1.9.jar | 0
manage/src/main/java/com/jilongda/manage/controller/TTicketController.java | 24 +
19 files changed, 1,024 insertions(+), 40 deletions(-)
diff --git a/common/lib/commons-codec-1.9.jar b/common/lib/commons-codec-1.9.jar
new file mode 100644
index 0000000..ef35f1c
--- /dev/null
+++ b/common/lib/commons-codec-1.9.jar
Binary files differ
diff --git a/common/lib/commons-logging-1.2.jar b/common/lib/commons-logging-1.2.jar
new file mode 100644
index 0000000..93a3b9f
--- /dev/null
+++ b/common/lib/commons-logging-1.2.jar
Binary files differ
diff --git a/common/lib/fluent-hc-4.5.2.jar b/common/lib/fluent-hc-4.5.2.jar
new file mode 100644
index 0000000..f44d04d
--- /dev/null
+++ b/common/lib/fluent-hc-4.5.2.jar
Binary files differ
diff --git a/common/lib/httpclient-4.5.2.jar b/common/lib/httpclient-4.5.2.jar
new file mode 100644
index 0000000..701609f
--- /dev/null
+++ b/common/lib/httpclient-4.5.2.jar
Binary files differ
diff --git a/common/lib/httpclient-cache-4.5.2.jar b/common/lib/httpclient-cache-4.5.2.jar
new file mode 100644
index 0000000..a6f5d31
--- /dev/null
+++ b/common/lib/httpclient-cache-4.5.2.jar
Binary files differ
diff --git a/common/lib/httpclient-win-4.5.2.jar b/common/lib/httpclient-win-4.5.2.jar
new file mode 100644
index 0000000..8f62f67
--- /dev/null
+++ b/common/lib/httpclient-win-4.5.2.jar
Binary files differ
diff --git a/common/lib/httpcore-4.4.4.jar b/common/lib/httpcore-4.4.4.jar
new file mode 100644
index 0000000..ac4a877
--- /dev/null
+++ b/common/lib/httpcore-4.4.4.jar
Binary files differ
diff --git a/common/lib/httpmime-4.5.2.jar b/common/lib/httpmime-4.5.2.jar
new file mode 100644
index 0000000..474670a
--- /dev/null
+++ b/common/lib/httpmime-4.5.2.jar
Binary files differ
diff --git a/common/lib/jna-4.1.0.jar b/common/lib/jna-4.1.0.jar
new file mode 100644
index 0000000..b1a3922
--- /dev/null
+++ b/common/lib/jna-4.1.0.jar
Binary files differ
diff --git a/common/lib/jna-platform-4.1.0.jar b/common/lib/jna-platform-4.1.0.jar
new file mode 100644
index 0000000..8d5fe3d
--- /dev/null
+++ b/common/lib/jna-platform-4.1.0.jar
Binary files differ
diff --git a/common/pom.xml b/common/pom.xml
index f276c02..36c6d1d 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -19,6 +19,76 @@
<dependencies>
<dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.9</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/commons-codec-1.9.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/commons-logging-1.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>fluent-hc</groupId>
+ <artifactId>fluent-hc</artifactId>
+ <version>4.5.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/fluent-hc-4.5.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>httpclient</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.5.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/httpclient-4.5.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>httpclient-cache</groupId>
+ <artifactId>httpclient-cache</artifactId>
+ <version>4.5.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/httpclient-cache-4.5.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>httpclient-win</groupId>
+ <artifactId>httpclient-win</artifactId>
+ <version>4.5.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/httpclient-win-4.5.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>httpcore</groupId>
+ <artifactId>httpcore</artifactId>
+ <version>4.4.4</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/httpcore-4.4.4.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>httpmime</groupId>
+ <artifactId>httpmime</artifactId>
+ <version>4.5.2</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/httpmime-4.5.2.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>jna</groupId>
+ <artifactId>jna</artifactId>
+ <version>4.1.0</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/jna-4.1.0.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>jna-platform</groupId>
+ <artifactId>jna-platform</artifactId>
+ <version>4.1.0</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/lib/jna-platform-4.1.0.jar</systemPath>
+ </dependency>
+ <dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.8.10.ALL</version>
diff --git a/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java b/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java
new file mode 100644
index 0000000..e37e48e
--- /dev/null
+++ b/common/src/main/java/com/jilongda/common/Ticket/TAddOptometryVO.java
@@ -0,0 +1,28 @@
+package com.jilongda.common.Ticket;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "添加验光单VO")
+public class TAddOptometryVO {
+
+ @ApiModelProperty(value = "预约id")
+ private Integer id;
+ @ApiModelProperty(value = "验光单详情")
+ private List<TOptometryDetailVO> optometryDetailVOS;
+ @ApiModelProperty(value = "门店名称")
+ private String shopName;
+ @ApiModelProperty(value = "验光师名称")
+ private String optometristName;
+ @ApiModelProperty(value = "验光时间")
+ private String time;
+ @ApiModelProperty(value = "客户电话")
+ private String phone;
+ @ApiModelProperty(value = "小票机编号")
+ private String sn;
+}
diff --git a/optometrist/src/main/java/com/jilongda/optometrist/vo/TOptometryDetailVO.java b/common/src/main/java/com/jilongda/common/Ticket/TOptometryDetailVO.java
similarity index 85%
rename from optometrist/src/main/java/com/jilongda/optometrist/vo/TOptometryDetailVO.java
rename to common/src/main/java/com/jilongda/common/Ticket/TOptometryDetailVO.java
index 5af6c24..041bbf9 100644
--- a/optometrist/src/main/java/com/jilongda/optometrist/vo/TOptometryDetailVO.java
+++ b/common/src/main/java/com/jilongda/common/Ticket/TOptometryDetailVO.java
@@ -1,7 +1,5 @@
-package com.jilongda.optometrist.vo;
+package com.jilongda.common.Ticket;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.jilongda.optometrist.model.TLineUp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -36,6 +34,5 @@
@ApiModelProperty(value = "左眼右眼 1为L 2为R")
private Integer status;
-
}
diff --git a/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java b/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java
new file mode 100644
index 0000000..65d94be
--- /dev/null
+++ b/common/src/main/java/com/jilongda/common/Ticket/TicketUtil.java
@@ -0,0 +1,730 @@
+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.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<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.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");
+ tAddOptometryVO.setPhone("19983174515");
+ tAddOptometryVO.setSn("922440578");
+ String method = print(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<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_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<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_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){
+ //标签说明:
+ //单标签:
+ //"<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.getOptometristName()).append("<BR>");
+ content.append("验光时间:").append(dto.getTime()).append("<BR>");
+ content.append("--------------------------------<BR>");
+ content.append("客户电话:").append(dto.getPhone()).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 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>");
+ }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("--------------------------------<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>");
+ }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("--------------------------------<BR>");
+ }
+ break;
+ case 1:
+ 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>");
+ }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("--------------------------------<BR>");
+ }
+ break;
+ }
+ }
+ 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);
+
+ }
+
+
+
+ //方法2
+ public static String printLabelMsg(String sn){
+
+ String content;
+ content = "<DIRECTION>1</DIRECTION>";//设定打印时出纸和打印字体的方向,n 0 或 1,每次设备重启后都会初始化为 0 值设置,1:正向出纸,0:反向出纸,
+ content += "<TEXT x='9' y='10' font='12' w='1' h='2' r='0'>#001 五号桌 1/3</TEXT><TEXT x='80' y='80' font='12' w='2' h='2' r='0'>可乐鸡翅</TEXT><TEXT x='9' y='180' font='12' w='1' h='1' r='0'>张三先生 13800138000</TEXT>";//40mm宽度标签纸打印例子,打开注释调用标签打印接口打印
+
+ //通过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_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<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_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<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_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<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_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;
+ }
+
+
+}
\ No newline at end of file
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java b/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
index e7715b0..df84469 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
@@ -1,10 +1,18 @@
package com.jilongda.manage.controller;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.common.utils.BinaryUtil;
+import com.aliyun.oss.model.MatchMode;
+import com.aliyun.oss.model.OSSObject;
+import com.aliyun.oss.model.PolicyConditions;
+import com.aliyun.oss.model.PutObjectResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.common.utils.UUIDUtil;
+import com.jilongda.manage.component.AliOssMange;
import com.jilongda.manage.dto.TModelDTO;
import com.jilongda.manage.model.TAppUser;
import com.jilongda.manage.model.TCoupon;
@@ -28,22 +36,18 @@
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -188,5 +192,116 @@
return multipartFile;
}
+ @ApiOperation(value = "服务端上传", notes = "服务端上传")
+ @PostMapping(value = "upload")
+ public ApiResult<String> fileUpload(@RequestParam(value = "file") MultipartFile file) throws IOException {
+ InputStream inputStream = file.getInputStream();
+ String filename = System.currentTimeMillis() + file.getOriginalFilename();
+ // Endpoint以杭州为例,其它Region请按实际情况填写。
+ final String endpoint = AliOssMange.endpoint;
+ // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
+ final String accessKeyId = AliOssMange.accessKeyId;
+ final String accessKeySecret = AliOssMange.accessKeySecret;
+ final String bucketName = AliOssMange.bucketName;
+ // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
+ String objectName = AliOssMange.dir + filename;
+ // 创建OSSClient实例。
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+ // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
+ // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
+ // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
+ PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
+ OSSObject ossObject = ossClient.getObject(bucketName, objectName);
+ String uri = ossObject.getResponse().getUri();
+ // 关闭OSSClient。
+ ossClient.shutdown();
+// uri = uri.replace("http://nn-bucket.oss-cn-shanghai.aliyuncs.com",FILE_CDN);
+ return ApiResult.okmsg(uri);
+ }
+
+
+ @ApiOperation(value = "服务端签名后直传", notes = "服务端签名后直传")
+ @PostMapping("signature")
+ public ApiResult<Map<String, String>> signature() {
+ OSS builder = new OSSClientBuilder().build(AliOssMange.endpoint, AliOssMange.accessKeyId, AliOssMange.accessKeySecret);
+ long expireTime = 30;
+ long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
+ Date expiration = new Date(expireEndTime);
+ PolicyConditions policyConds = new PolicyConditions();
+ policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
+ policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, AliOssMange.dir);
+ String postPolicy = builder.generatePostPolicy(expiration, policyConds);
+ byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
+ String encodedPolicy = BinaryUtil.toBase64String(binaryData);
+ String postSignature = builder.calculatePostSignature(postPolicy);
+ Map<String, String> respMap = new LinkedHashMap<>(6);
+ respMap.put("accessid", AliOssMange.accessKeyId);
+ respMap.put("policy", encodedPolicy);
+ respMap.put("signature", postSignature);
+ // 示例为dir
+ respMap.put("dir", AliOssMange.dir);
+ // 前端为key
+ // respMap.put("key", AliOssMange.dir);
+ respMap.put("host", AliOssMange.host);
+// respMap.put("cdn", AliOssMange.cdn);
+ respMap.put("expire", String.valueOf(expireEndTime / 1000));
+// // 回调
+// if (StringUtils.hasLength(AliOssMange.callbackUrl)) {
+// JSONObject jasonCallback = new JSONObject();
+// jasonCallback.put("callbackUrl", AliOssMange.callbackUrl);
+// String callbackBody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType}}";
+// jasonCallback.put("callbackBody", callbackBody);
+// jasonCallback.put("callbackBodyType", "application/json");
+// String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
+// respMap.put("callback", base64CallbackBody);
+// }
+
+// HttpServletResponse response = WebUtils.response();
+// assert response != null;
+// response.setHeader("Access-Control-Allow-Origin", "*");
+// response.setHeader("Access-Control-Allow-Methods", "GET, POST");
+
+ // 关闭OSSClient。
+ builder.shutdown();
+ return ApiResult.success(respMap);
+ }
+
+ @ApiOperation(value = "服务端上传(二进制字符串)", notes = "服务端上传")
+ @PostMapping(value = "str/upload")
+ public String strUpload(InputStream inputStream, String filename) throws IOException {
+ //String filename = System.currentTimeMillis() + CodeGenerateUtils.generateVolumeSn()+".jpg";
+ // Endpoint以杭州为例,其它Region请按实际情况填写。
+ final String endpoint = AliOssMange.endpoint;
+ // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
+ final String accessKeyId = AliOssMange.accessKeyId;
+ final String accessKeySecret = AliOssMange.accessKeySecret;
+ final String bucketName = AliOssMange.bucketName;
+ // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
+ String objectName = AliOssMange.dir + filename;
+ // 创建OSSClient实例。
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+ // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
+ // InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
+ // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
+ PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
+ OSSObject ossObject = ossClient.getObject(bucketName, objectName);
+ String uri = ossObject.getResponse().getUri();
+ // 关闭OSSClient。
+ ossClient.shutdown();
+ return uri;
+ }
+
+ /**
+ * oss上传成功回调
+ *
+ * @param callback
+ * @return
+ */
+ @ApiOperation(value = "oss回调", notes = "oss回调")
+ @PostMapping(value = "/callback")
+ public ApiResult callback(@RequestBody Map<String, Object> callback) {
+ String filename = "http://".concat(AliOssMange.bucketName).concat(".").concat(AliOssMange.endpoint).concat("/").concat(callback.get("filename").toString());
+ return ApiResult.okmsg(filename);
+ }
}
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TTicketController.java b/manage/src/main/java/com/jilongda/manage/controller/TTicketController.java
index 8781903..58d47e7 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TTicketController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TTicketController.java
@@ -1,21 +1,20 @@
package com.jilongda.manage.controller;
+import com.alibaba.fastjson.JSONObject;
+import com.jilongda.common.Ticket.TicketUtil;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TStore;
import com.jilongda.manage.model.TTicket;
-import com.jilongda.manage.query.TWarehousingDetailQuery;
import com.jilongda.manage.query.TicketQuery;
+import com.jilongda.manage.service.TStoreService;
import com.jilongda.manage.service.TTicketService;
-import com.jilongda.manage.vo.TFrameWarehousingDetailVO;
import com.jilongda.manage.vo.TTicketVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-
-import sun.security.krb5.internal.Ticket;
/**
* <p>
@@ -31,8 +30,11 @@
public class TTicketController {
+
@Autowired
private TTicketService tTicketService;
+ @Autowired
+ private TStoreService storeService;
@ApiOperation(value = "小票机列表")
@PostMapping(value = "/pageList")
@@ -44,6 +46,12 @@
@ApiOperation(value = "小票机添加")
@PostMapping(value = "/add")
public ApiResult<String> add(@RequestBody TTicket dto) {
+ TStore store = storeService.getById(dto.getStoreId());
+ String res = TicketUtil.addprinter(dto.getCloudId() + "#" + dto.getSecret() + "#" + store.getName());
+ JSONObject result = JSONObject.parseObject(res);
+ if (!result.getString("msg").equals("ok")){
+ return ApiResult.failed(result.getString("msg"));
+ }
tTicketService.save(dto);
return ApiResult.success();
}
@@ -55,6 +63,12 @@
@ApiOperation(value = "小票机编辑")
@PostMapping(value = "/update")
public ApiResult<String> update(@RequestBody TTicket dto) {
+ TStore store = storeService.getById(dto.getStoreId());
+ String res = TicketUtil.editprinter(dto.getCloudId()+"",store.getName());
+ JSONObject result = JSONObject.parseObject(res);
+ if (!result.getString("msg").equals("ok")){
+ return ApiResult.failed(result.getString("msg"));
+ }
tTicketService.updateById(dto);
return ApiResult.success();
}
diff --git a/optometrist/pom.xml b/optometrist/pom.xml
index 0f7f05e..a015838 100644
--- a/optometrist/pom.xml
+++ b/optometrist/pom.xml
@@ -17,6 +17,33 @@
</properties>
<dependencies>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
diff --git a/optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java b/optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java
index 92d624e..48787e6 100644
--- a/optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java
+++ b/optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java
@@ -1,20 +1,19 @@
package com.jilongda.optometrist.controller;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.jilongda.common.Ticket.TAddOptometryVO;
+import com.jilongda.common.Ticket.TOptometryDetailVO;
+import com.jilongda.common.Ticket.TicketUtil;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
-import com.jilongda.optometrist.authority.model.SecUser;
import com.jilongda.optometrist.authority.service.SecUserService;
import com.jilongda.optometrist.model.*;
-import com.jilongda.optometrist.query.TOptometristQuery;
import com.jilongda.optometrist.query.TOptometryQuery;
-import com.jilongda.optometrist.query.TicketQuery;
import com.jilongda.optometrist.service.*;
import com.jilongda.optometrist.utils.LoginInfoUtil;
import com.jilongda.optometrist.vo.*;
-import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
@@ -22,6 +21,7 @@
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
@@ -57,6 +57,8 @@
private TOrderService orderService;
@Autowired
private TOptometryDetailService optometryDetailService;
+ @Autowired
+ private TTicketService tTicketService;
@ApiOperation(value = "获取验光单分页列表",tags = "验光单")
@PostMapping(value = "/pageList")
public ApiResult<PageInfo<TOptometryVO>> pageList(@RequestBody TOptometryQuery query) {
@@ -267,6 +269,25 @@
// 验光完成
lineUp.setStatus(3);
tLineUpService.updateById(lineUp);
+ dto.setOptometristName(optometrist.getName());
+ TStore store = storeService.getById(lineUp.getStoreId());
+ dto.setShopName(store.getName());
+ TAppUser appUser = appUserService.getById(lineUp.getUserId());
+ dto.setPhone(appUser.getPhone());
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String format = simpleDateFormat.format(new Date());
+ dto.setTime(format);
+ TTicket tTicket = tTicketService.lambdaQuery().eq(TTicket::getStoreId, lineUp.getStoreId())
+ .eq(TTicket::getStatus, 1).list().stream().findFirst().orElse(null);
+ if (tTicket==null){
+ return ApiResult.failed("当前门店未绑定小票机");
+ }
+ dto.setSn(tTicket.getCloudId()+"");
+ String print = TicketUtil.print(dto);
+ JSONObject jsonObject = JSONObject.parseObject(print);
+ if (!jsonObject.getString("msg").equals("0")){
+ return ApiResult.failed(jsonObject.getString("msg"));
+ }
return ApiResult.success();
}
diff --git a/optometrist/src/main/java/com/jilongda/optometrist/vo/TAddOptometryVO.java b/optometrist/src/main/java/com/jilongda/optometrist/vo/TAddOptometryVO.java
deleted file mode 100644
index d83aa93..0000000
--- a/optometrist/src/main/java/com/jilongda/optometrist/vo/TAddOptometryVO.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jilongda.optometrist.vo;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-@ApiModel(value = "添加验光单VO")
-public class TAddOptometryVO {
-
- @ApiModelProperty(value = "预约id")
- private Integer id;
- @ApiModelProperty(value = "验光单详情")
- private List<TOptometryDetailVO> optometryDetailVOS;
-}
--
Gitblit v1.7.1