Переглянути джерело

修改班结,班结打印小票

MS-QJVSRANLTYEO\Administrator 4 роки тому
батько
коміт
b918fdffd3

+ 14 - 1
Yijia-SaaS/yijia-station/pom.xml

@@ -15,7 +15,16 @@
 
 
     <dependencies>
-
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.5</version>
+        </dependency>
         <!-- 通用工具-->
         <dependency>
             <groupId>com.yijia</groupId>
@@ -26,6 +35,10 @@
             <groupId>com.yijia</groupId>
             <artifactId>yijia-quartz</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 217 - 52
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/controller/StationClassStructureController.java

@@ -5,15 +5,16 @@ import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import com.yijia.station.domain.PayOrder;
 import com.yijia.station.domain.StationClassesSummary;
+import com.yijia.station.domain.StationDeviceManage;
 import com.yijia.station.mapper.PayOrderMapper;
 import com.yijia.station.service.IPayOrderService;
 import com.yijia.station.service.IStationClassesSummaryService;
+import com.yijia.station.service.IStationDeviceManageService;
+import com.yijia.station.utils.FeiEPrinterUtil;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -49,6 +50,9 @@ public class StationClassStructureController extends BaseController
     private IPayOrderService payOrderService;
     @Autowired
     private IStationClassesSummaryService stationClassesSummaryService;
+    @Autowired
+    private IStationDeviceManageService stationDeviceManageService;
+
     /**
      * 查询班结管理列表
      */
@@ -167,7 +171,7 @@ public class StationClassStructureController extends BaseController
             //获取上次班结时间
             PayOrder order=new PayOrder();
             order.setStationId(stationId);
-            order.setStatus("2");
+            order.setStatus("1");
             DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             beginTime= dateFormat.format(sss.getClassStructureDate());
             order.setBeginTime(beginTime);
@@ -188,6 +192,71 @@ public class StationClassStructureController extends BaseController
                 stationclass.setConsumerId(payOrder.getConsumerId());
                 stationclass.setConsumer(payOrder.getConsumer());
                 stationclass.setAmt(payOrder.getAmt());
+                if(payOrder.getReceivableAmt()!=null){
+                    stationclass.setReceivableAmt(payOrder.getReceivableAmt());
+                }else{
+                    stationclass.setReceivableAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getReceivedAmt()!=null){
+                    stationclass.setReceivedAmt(payOrder.getReceivedAmt());
+                }else{
+                    stationclass.setReceivedAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getDiscountAmt()!=null){
+                    stationclass.setDiscountAmt(payOrder.getDiscountAmt());
+                }else{
+                    stationclass.setDiscountAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getDiscountCouponAmt()!=null){
+                    stationclass.setDiscountCouponAmt(payOrder.getDiscountCouponAmt());
+                }else{
+                    stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getWxAmt()!=null){
+                    stationclass.setWxAmt(payOrder.getWxAmt());
+                }else{
+                    stationclass.setWxAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getZfbAmt()!=null){
+                    stationclass.setZfbAmt(payOrder.getZfbAmt());
+                }else{
+                    stationclass.setZfbAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getPosAmt()!=null){
+                    stationclass.setPosAmt(payOrder.getPosAmt());
+                }else{
+                    stationclass.setPosAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getXjAmt()!=null){
+                    stationclass.setXjAmt(payOrder.getXjAmt());
+                }else{
+                    stationclass.setXjAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getDidiAppAmt()!=null){
+                    stationclass.setDidiAppAmt(payOrder.getDidiAppAmt());
+                }else{
+                    stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getTyAppAmt()!=null){
+                    stationclass.setDidiAppAmt(payOrder.getTyAppAmt());
+                }else{
+                    stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getOtherAmt()!=null){
+                    stationclass.setOtherAmt(payOrder.getOtherAmt());
+                }else{
+                    stationclass.setOtherAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getDzkAmt()!=null){
+                    stationclass.setDzkAmt(payOrder.getDzkAmt());
+                }else{
+                    stationclass.setDzkAmt(BigDecimal.valueOf(0));
+                }
+                if(payOrder.getMemberAmt()!=null){
+                    stationclass.setMemberAmt(payOrder.getMemberAmt());
+                }else{
+                    stationclass.setMemberAmt(BigDecimal.valueOf(0));
+                }
                 stationclass.setOrderLiters(payOrder.getOrderLiters());
                 stationclass.setPayWay(payOrder.getPayWay());
                 stationclass.setPayType(payOrder.getPayType());
@@ -233,50 +302,147 @@ public class StationClassStructureController extends BaseController
         scs.setClassStructureNo(no);
         //汇总班结数据将汇总的数据插入到汇总数据中
         StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
-        StationClassesSummary stationClassesSummary =new StationClassesSummary();
-        stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
-        if(stationclass.getClassStartDate()!=null){
-            stationClassesSummary.setStartDate(stationclass.getClassStartDate());
-        }
-        if(stationclass.getClassStructureDate()!=null){
-            stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
-        }
+        if(stationclass!=null){
+            StationClassesSummary stationClassesSummary =new StationClassesSummary();
+            stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
+            if(stationclass.getClassStartDate()!=null){
+                stationClassesSummary.setStartDate(stationclass.getClassStartDate());
+            }
+            if(stationclass.getClassStructureDate()!=null){
+                stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
+            }
 
-        stationClassesSummary.setStationName(stationclass.getStationName());
-        if(stationclass.getStationId()!=null){
-            stationClassesSummary.setStationId(stationclass.getStationId());
-        }
-       if(stationclass.getNum()!=null){
-           stationClassesSummary.setOrderNum(Long.valueOf(stationclass.getNum()));
-       }
-        if(stationclass.getPrintNum()!=null){
-            stationClassesSummary.setPrintNum(stationclass.getPrintNum());
-        }
-        if(stationclass.getOrderLiters()!=null){
-            stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
-        }
-        if(stationclass.getAmt()!=null){
-            stationClassesSummary.setSaleAmt(stationclass.getAmt());
-        }
-        if(stationclass.getDzkAmt()!=null){
-            stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
-        }else{
-            stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
-        }
-        if(stationclass.getZfbAmt()!=null){
-            stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
-        }else{
-            stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
-        }
+            stationClassesSummary.setStationName(stationclass.getStationName());
+            if(stationclass.getStationId()!=null){
+                stationClassesSummary.setStationId(stationclass.getStationId());
+            }
+            if(stationclass.getNum()!=null){
+                stationClassesSummary.setOrderNum(Long.valueOf(stationclass.getNum()));
+            }
+            if(stationclass.getPrintNum()!=null){
+                stationClassesSummary.setPrintNum(stationclass.getPrintNum());
+            }
+            if(stationclass.getOrderLiters()!=null){
+                stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
+            }
+            if(stationclass.getAmt()!=null){
+                stationClassesSummary.setSaleAmt(stationclass.getAmt());
+            }
+            if(stationclass.getDzkAmt()!=null){
+                stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
+            }else{
+                stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
+            }
+            if(stationclass.getZfbAmt()!=null){
+                stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
+            }else{
+                stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
+            }
 
-        if(stationclass.getWxAmt()!=null){
-            stationClassesSummary.setWxAmt(stationclass.getWxAmt());
-        }else{
-            stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
+            if(stationclass.getWxAmt()!=null){
+                stationClassesSummary.setWxAmt(stationclass.getWxAmt());
+            }else{
+                stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
+            }
+            stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
+            i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
         }
-        stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
-        i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
+        if(i==1){
+            //班结成功,打印小票
+            //查询班结小票数据
+            StationClassStructure classStructure= new StationClassStructure();
+            classStructure.setClassStructureNo(no);
+            List<StationClassStructure>  list= stationClassStructureService.listOilStructure(classStructure);
+            //查询出小票数据
+            String content;
+            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            content = "<CB>班结小票</CB><BR>";
+            content += "--------------------------------<BR>";
+            if(list!=null && list.size()>0){
+                content += "开始时间:"+dateFormat.format(list.get(0).getClassStartDate())+"  <BR>";
+                content += "班结时间:"+dateFormat.format(list.get(0).getClassStructureDate())+" <BR>";
+                content += "油品  升数  金额  单数  优惠  <BR>";
+                content += "--------------------------------<BR>";
 
+                BigDecimal sumAmt = new BigDecimal(0);
+                BigDecimal liters = new BigDecimal(0);
+                BigDecimal coupon = new BigDecimal(0);
+                BigDecimal ysAmt =  new BigDecimal(0);
+                int num = 0;
+                int pageNum=0;
+                for(StationClassStructure str : list){
+                    if( str.getOrderLiters()==null){
+                        str.setOrderLiters(BigDecimal.valueOf(0));
+                    }
+                    //实收金额
+                    if( str.getAmt()==null){
+                        str.setAmt(BigDecimal.valueOf(0));
+                    }
+                    //应付金额
+                    if( str.getReceivableAmt()==null){
+                        str.setReceivableAmt(BigDecimal.valueOf(0));
+                    }
+                    if( str.getDiscountCouponAmt()==null){
+                        str.setDiscountCouponAmt(BigDecimal.valueOf(0));
+                    }
+                    if( str.getOrderNo()==null){
+                        str.setOrderNo(String.valueOf(0));
+                    }
+                    content += str.getOilName()+"  "+str.getOrderLiters()+"  "+str.getAmt()+"  "+str.getOrderNo()+"  "+str.getDiscountCouponAmt()+ " <BR>";
+                    if(str.getAmt()!=null){
+                        sumAmt=sumAmt.add(str.getAmt());
+                    }
+                    if(str.getReceivableAmt()!=null){
+                        ysAmt=ysAmt.add(str.getReceivableAmt());
+                    }
+                    if(str.getOrderLiters()!=null){
+                        liters=liters.add(str.getOrderLiters());
+                    }
+                    if(str.getOrderNo()!=null){
+                        num= num+Integer.parseInt(str.getOrderNo());
+                    }
+                    if(str.getDiscountCouponAmt()!=null){
+                        coupon=coupon.add(str.getDiscountCouponAmt());
+                    }
+                    if(str.getPrintNum()!=null){
+                        pageNum += str.getPrintNum();
+                    }
+                }
+                content += "--------------------------------<BR>";
+                content += "合计  "+liters+"  "+sumAmt+"  "+num+"  "+coupon+"<BR>";
+                content += "小票张数: "+pageNum+" 张<BR>";
+                content += "班结金额: "+sumAmt+" 元<BR>";
+                content += "优惠总额: "+coupon+" 元<BR>";
+                content += "实际支付: "+ysAmt +" 元<BR>";
+                content += "班结人: "+list.get(0).getClassStructureMan()+"<BR>";
+            }else{
+                content += "开始时间: <BR>";
+                content += "班结时间: <BR>";
+                content += "油站  升数  金额  单数  优惠  <BR>";
+                content += "--------------------------------<BR>";
+                content += "合计  <BR>";
+                content += "小票张数:<BR>";
+                content += "班结金额:<BR>";
+                content += "优惠总额:<BR>";
+                content += "实际支付: <BR>";
+                content += "班结人:<BR>";
+            }
+            content += "<BR>";
+            content += "--------------------------------<BR>";
+            content += "<BR>";
+            //查询打印机信息
+            Map params  =new HashMap();
+            params.put("stationId", list.get(0).getStationId());
+            params.put("deviceType", "3");
+            Map mp  = stationDeviceManageService.getPrinterSnByStationId(params);
+            System.out.println(mp);
+            if(mp.containsKey("device_no") && mp.get("device_no")!= null && mp.get("device_no")!=""){
+               String sn = mp.get("device_no").toString();
+               FeiEPrinterUtil.printReceipt(sn, content);
+            }else {
+                logger.info("请正确配置打印机");
+            }
+        }
         return toAjax(i);
 
     }
@@ -311,7 +477,7 @@ public class StationClassStructureController extends BaseController
     public AjaxResult getAgeClassStructure(StationClassStructure stationClassStructure)
     {
         stationClassStructure.setStationId(Long.valueOf("1"));
-        return AjaxResult.success(stationClassStructureService.selectDistnctClassStructure(stationClassStructure));
+        return AjaxResult.success(stationClassStructureService.selectStationClassStructureMax(stationClassStructure));
     }
     //初始化数据 根据员工汇总
     @PreAuthorize("@ss.hasPermi('station:structure:selectPersonnelStructure')")
@@ -324,10 +490,9 @@ public class StationClassStructureController extends BaseController
         List<StationClassStructure> list = new ArrayList<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         if(structure!=null){
-            System.out.println("日期:"+structure.getClassStructureDate());
             PayOrder payOrder =new PayOrder();
             payOrder.setStationId(structure.getStationId());
-            payOrder.setStatus("2");
+            payOrder.setStatus("1");
             payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
             List<PayOrder> payOrderList =  payOrderService.selectPersonnelStructure(payOrder);
             for(PayOrder order:payOrderList){
@@ -342,7 +507,7 @@ public class StationClassStructureController extends BaseController
         }else{
            //根据上次班结时间,和油站去订单表中查询数据,并按照人员汇总数据
             PayOrder payOrder =new PayOrder();
-            payOrder.setStatus("2");
+            payOrder.setStatus("1");
             List<PayOrder> payOrderList =  payOrderService.selectPersonnelStructure(payOrder);
             for(PayOrder order:payOrderList){
                 StationClassStructure classStructure =new StationClassStructure();
@@ -374,7 +539,7 @@ public class StationClassStructureController extends BaseController
         //根据上次班结时间,和油站去订单表中查询数据,并按照人员汇总数据
        if(structure!=null){
            PayOrder payOrder =new PayOrder();
-           payOrder.setStatus("2");
+           payOrder.setStatus("1");
            payOrder.setStationId(structure.getStationId());
            System.out.println("日期:"+structure.getClassStructureDate());
            payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
@@ -390,7 +555,7 @@ public class StationClassStructureController extends BaseController
            }
        }else{
            PayOrder payOrder =new PayOrder();
-           payOrder.setStatus("2");
+           payOrder.setStatus("1");
            List<PayOrder> payOrderList =  payOrderService.selectOilStructure(payOrder);
            for(PayOrder order:payOrderList){
                StationClassStructure classStructure =new StationClassStructure();
@@ -423,7 +588,7 @@ public class StationClassStructureController extends BaseController
         if(structure !=null){
             PayOrder payOrder =new PayOrder();
             payOrder.setStationId(structure.getStationId());
-            payOrder.setStatus("2");
+            payOrder.setStatus("1");
             System.out.println("日期:"+structure.getClassStructureDate());
             payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
             List<PayOrder> payOrderList =  payOrderService.selectPersonnelPayStructure(payOrder);
@@ -446,7 +611,7 @@ public class StationClassStructureController extends BaseController
             }
         }else{
             PayOrder payOrder =new PayOrder();
-            payOrder.setStatus("2");
+            payOrder.setStatus("1");
             List<PayOrder> payOrderList =  payOrderService.selectPersonnelPayStructure(payOrder);
             for(PayOrder order:payOrderList){
                 StationClassStructure classStructure =new StationClassStructure();

+ 4 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/mapper/StationDeviceManageMapper.java

@@ -1,6 +1,8 @@
 package com.yijia.station.mapper;
 
 import java.util.List;
+import java.util.Map;
+
 import com.yijia.station.domain.StationDeviceManage;
 
 /**
@@ -58,4 +60,6 @@ public interface StationDeviceManageMapper
      * @return 结果
      */
     public int deleteStationDeviceManageByIds(Long[] deviceIds);
+
+    Map<String, Object> getPrinterSnByStationId(Map<String, Object> params);
 }

+ 2 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/IStationClassStructureService.java

@@ -2,6 +2,7 @@ package com.yijia.station.service;
 
 import java.util.List;
 import com.yijia.station.domain.StationClassStructure;
+import com.yijia.station.domain.StationDeviceManage;
 
 /**
  * 班结管理Service接口
@@ -111,4 +112,5 @@ public interface IStationClassStructureService
      */
     public List<StationClassStructure> selectStationClassStructureExport(StationClassStructure stationClassStructure);
 
+
 }

+ 5 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/IStationDeviceManageService.java

@@ -1,6 +1,8 @@
 package com.yijia.station.service;
 
 import java.util.List;
+import java.util.Map;
+
 import com.yijia.station.domain.StationDeviceManage;
 
 /**
@@ -58,4 +60,7 @@ public interface IStationDeviceManageService
      * @return 结果
      */
     public int deleteStationDeviceManageById(Long deviceId);
+
+    //查询打印机设备
+    Map<String, Object> getPrinterSnByStationId(Map<String, Object> params);
 }

+ 7 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/impl/StationDeviceManageServiceImpl.java

@@ -1,6 +1,8 @@
 package com.yijia.station.service.impl;
 
 import java.util.List;
+import java.util.Map;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yijia.station.mapper.StationDeviceManageMapper;
@@ -90,4 +92,9 @@ public class StationDeviceManageServiceImpl implements IStationDeviceManageServi
     {
         return stationDeviceManageMapper.deleteStationDeviceManageById(deviceId);
     }
+
+    @Override
+    public Map<String, Object> getPrinterSnByStationId(Map<String, Object> params) {
+        return stationDeviceManageMapper.getPrinterSnByStationId(params);
+    }
 }

+ 443 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/utils/FeiEPrinterUtil.java

@@ -0,0 +1,443 @@
+package com.yijia.station.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);
+
+    /*飞鹅后台管理登录账号
+        账号:79800875@qq.com
+        密码:jk18654585051
+     */
+    public static final String URL = "http://api.feieyun.cn/Api/Open/";//不需要修改
+    public static final String USER = "79800875@qq.com";//*必填*:账号名
+    public static final String UKEY = "ScyIqKvntVSJkWhz";//*必填*: 飞鹅云后台注册账号后生成的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
+     */
+    public 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
+     */
+    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);
+                    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
+     */
+    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);
+                    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
+     */
+    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);
+                    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
+     */
+    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);
+                    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;
+    }
+
+}