Bladeren bron

修改 添加飞蛾打印工具类

JK 4 jaren geleden
bovenliggende
commit
8b76d61637

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/service/impl/PayOrderServiceImpl.java

@@ -88,7 +88,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         payOrder.setOrderType(payOrderRequest.getOrderType());  //订单类型
         //根据油站和油枪获取油枪编号和价格
         HashMap<String, Object> params = new HashMap<>();
-        params.put("oilGunId", payOrderRequest.getOilGun());
+        params.put("oliGunNo", payOrderRequest.getOilGun());
         params.put("stationId", payOrderRequest.getStationId());
         String oilPersonnel = "";
         //使用list原因:(当时无班结管理先用list处理)一个枪号对应多个加油员场景

+ 437 - 0
YijiaRestful/src/main/java/com/platform/yijia/utils/FeiEPrinterUtil.java

@@ -0,0 +1,437 @@
+package com.platform.yijia.utils;
+
+import org.apache.commons.codec.digest.DigestUtils;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/***
+ * <Title> FeiEPrinterUtil </Title>
+ * <Description> 飞鹅打印机工具类  </Description>
+ * @date  2021年1月17日
+ * @Author JK
+ */
+public class FeiEPrinterUtil {
+
+    private static Logger logger =(Logger) LoggerFactory.getLogger(FeiEPrinterUtil.class);
+
+    public static final String URL = "http://api.feieyun.cn/Api/Open/";//不需要修改
+    public static final String USER = "*****************";//*必填*:账号名
+    public static final String UKEY = "*****************";//*必填*: 飞鹅云后台注册账号后生成的UKEY 【备注:这不是填打印机的KEY】
+    //public static final String SN = "*********";//*必填*:打印机编号,必须要在管理后台里添加打印机或调用API接口添加之后,才能调用API
+
+    /*
+     * //================================小票打印功能===========================================//
+     * ***返回值JSON字符串***
+	 *      成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5}
+	 *      失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
+     * @param sn
+     * @return
+     */
+    private static String printReceipt(String sn, String content){
+        //标签说明:
+        //单标签:
+        //"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
+        //"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令
+        //成对标签:
+        //"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍
+        //<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐
+        //拼凑订单内容时可参考如下格式
+        //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式
+
+//        String content;
+//        content = "<CB>测试打印</CB><BR>";
+//        content += "名称      单价  数量 金额<BR>";
+//        content += "--------------------------------<BR>";
+//        content += "饭       1.0    1   1.0<BR>";
+//        content += "炒饭      10.0   10  10.0<BR>";
+//        content += "蛋炒饭     10.0   10  100.0<BR>";
+//        content += "鸡蛋炒饭    100.0  1   100.0<BR>";
+//        content += "番茄蛋炒饭   1000.0 1   100.0<BR>";
+//        content += "西红柿蛋炒饭  1000.0 1   100.0<BR>";
+//        content += "西红柿鸡蛋炒饭 100.0  10  100.0<BR>";
+//        content += "备注:加辣<BR>";
+//        content += "--------------------------------<BR>";
+//        content += "合计:xx.0元<BR>";
+//        content += "送货地点:广州市南沙区xx路xx号<BR>";
+//        content += "联系电话:13888888888888<BR>";
+//        content += "订餐时间:2016-08-08 08:08:08<BR>";
+//        content += "<QR>http://www.dzist.com</QR>";
+
+        //通过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",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);
+                    logger.info(result);
+                }
+            }
+        }
+        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;
+    }
+
+    /*
+     * //================================查询某订单是否打印成功=====================================//
+     * ***返回值JSON字符串***
+	 *      成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":2}//data:true为已打印,false为未打印
+	 *      失败:{"msg":"错误描述","ret":非0, "data":null,"serverExecutedTime":7}
+     * @param orderid
+     * @return
+     */
+    private 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);
+                    logger.info(result);
+                }
+            }
+        }
+        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;
+
+    }
+
+    /*
+     * //=====================查询指定打印机某天的订单详情==========================//
+     * ***返回值JSON字符串***
+     *      成功:{"msg":"ok","ret":0,"data":{"print":6,"waiting":1},"serverExecutedTime":9}//print已打印,waiting为打印
+     *      失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
+     * @param sn
+     * @param strdate
+     * @return
+     */
+    private 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);
+                    logger.info(result);
+                }
+            }
+        }
+        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;
+
+    }
+
+    /*
+     * //=====================查询打印机的状态==============================//
+     * ***返回值JSON字符串***
+     *      成功:{"msg":"ok","ret":0,"data":"状态","serverExecutedTime":4}
+     * 	    失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
+     * @param sn
+     * @return
+     */
+    private 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);
+                    logger.info(result);
+                }
+            }
+        }
+        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;
+
+    }
+
+
+    /*
+     * //==================添加打印机接口(支持批量)==================
+     *     //***返回值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 = "sn1#key1#remark1#carnum1\nsn2#key2#remark2#carnum2";
+     *     //			String method = addprinter(snlist);
+     *     //			System.out.println(method);
+     * @param snlist
+     * @return
+     */
+    private 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);
+                    logger.info(result);
+                }
+            }
+        }
+        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;
+    }
+
+
+    /*
+     * 生成签名字符串
+     * @param USER
+     * @param UKEY
+     * @param STIME
+     * @return
+     */
+    private static String signature(String USER,String UKEY,String STIME){
+        String s = DigestUtils.sha1Hex(USER+UKEY+STIME);
+        return s;
+    }
+
+}

+ 2 - 2
YijiaRestful/src/main/resources/mapper/PayOrderMapper.xml

@@ -143,8 +143,8 @@
         LEFT JOIN station_oil_price AS B ON A.oil_name = B.oil_name AND A.station_id = B.station_id
         LEFT JOIN station_personnel AS C ON A.oil_gun_no = C.gun_no AND A.station_id = C.station_id
     <where>
-        <if test="oilGunId != null and oilGunId !=''">
-          A.oil_gun_id = #{oilGunId}
+        <if test="oliGunNo != null and oliGunNo !=''">
+          A.oil_gun_no = #{oliGunNo}
         </if>
         <if test="stationId !=null and stationId !=''">
           AND A.station_id = #{stationId}