Procházet zdrojové kódy

打印机模块使用 策略模式

叶君翔 před 3 roky
rodič
revize
6eb2a414ca

+ 1 - 0
lb-app/src/main/java/com/ydd/app/service/impl/ApiWaimaiPrintServiceImpl.java

@@ -200,6 +200,7 @@ public class ApiWaimaiPrintServiceImpl implements ApiWaimaiPrintService {
         dto.setPrintOrderDto(printOrderDto);
         dto.setDeviceDtoList(printDeviceDtos);
         dto.setIsforce(true);
+        log.info(JSONObject.toJSONString(dto));
         unifiedPrintService.printOrder(dto);
     }
 

+ 46 - 0
lb-third/lb-third-print/src/main/java/com/ydd/third/print/factory/StrategyFactory.java

@@ -0,0 +1,46 @@
+package com.ydd.third.print.factory;
+
+import com.ydd.third.print.enums.PrintDeviceType;
+import com.ydd.third.print.feie.service.FePrintService;
+import com.ydd.third.print.jiaboyun.service.JBYPrintService;
+import com.ydd.third.print.service.PrintService;
+import com.ydd.third.print.shangpengyun.service.SPYPrintService;
+import com.ydd.third.print.xinhuayun.service.XHYPrintService;
+import com.ydd.third.print.yilian.service.YlyPrintService;
+import com.ydd.third.print.youshengyun.service.YSYPrintService;
+import com.ydd.third.print.zhongwuyun.service.ZWYPrintService;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ *  打印设备策略工厂
+ *
+ * @author 叶君翔
+ * @date 2021/11/22 18:04
+ */
+public class StrategyFactory {
+
+    private static final StrategyFactory factory = new StrategyFactory();
+    private StrategyFactory() {
+    }
+    private static final ConcurrentHashMap<Integer, PrintService> strategyMap = new ConcurrentHashMap<>();
+
+    static {
+        strategyMap.put(PrintDeviceType.feie.type, new FePrintService());
+        strategyMap.put(PrintDeviceType.yly.type, new YlyPrintService());
+        strategyMap.put(PrintDeviceType.zwy.type, new ZWYPrintService());
+        strategyMap.put(PrintDeviceType.jby.type, new JBYPrintService());
+        strategyMap.put(PrintDeviceType.xhy.type, new XHYPrintService());
+        strategyMap.put(PrintDeviceType.sp.type, new SPYPrintService());
+        strategyMap.put(PrintDeviceType.ys.type, new YSYPrintService());
+    }
+
+    public PrintService creator(Integer type) {
+        return strategyMap.get(type);
+    }
+
+    public static StrategyFactory getInstance() {
+        return factory;
+    }
+
+}

+ 25 - 34
lb-third/lb-third-print/src/main/java/com/ydd/third/print/feie/service/FePrintService.java

@@ -5,12 +5,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ydd.common.exception.BusinessException;
 import com.ydd.third.print.config.PrintConfig;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.HttpClient;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.response.PrintStatusResp;
+import com.ydd.third.print.service.PrintService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.stereotype.Service;
@@ -27,17 +27,15 @@ import java.util.Map;
  */
 @Service
 @Slf4j
-public class FePrintService {
+public class FePrintService implements PrintService {
 
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        String printSn = printDeviceDto.getDeviceSn();
+        String printKey = printDeviceDto.getDeviceSecret();
+        String name = printDeviceDto.getName();
 
-    /**
-     * 添加打印机
-     *
-     * @param printSn
-     */
-    public String addPrintSn(String printSn, String printKey,String name) {
         String result ="ok";
-
         Map<String, String> params = new HashMap<>();
         params.put("user", PrintConfig.fe_USER);
         String time = String.valueOf(System.currentTimeMillis() / 1000);
@@ -52,15 +50,30 @@ public class FePrintService {
         if (jsonObject == null || jsonObject.get("data")!=null) {
             JSONArray array = JSONArray.parseArray(jsonObject.getJSONObject("data").getString("no"));
             if(array!=null&&array.size()>0){
-               // result = asciiToString(array.getString(0));
+                // result = asciiToString(array.getString(0));
                 result = array.getString(0);
             }
         }
         return result;
     }
 
+    @Override
+    public void deleteSn(String deviceSn) {
+        Map<String, String> params = new HashMap<>();
+        params.put("user", PrintConfig.fe_USER);
+        String time = String.valueOf(System.currentTimeMillis() / 1000);
+        params.put("stime", time);
+        params.put("sig", signature(time));
+        params.put("apiname", "Open_printerDelList");
+        params.put("snlist", deviceSn);
+        String result = HttpClient.post(PrintConfig.fe_URL, params);
+        log.info("飞蛾删除打印机返回结果"+result);
+    }
+
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String printSn = printDeviceDto.getDeviceSn();
 
-    public PrintStatusResp printStatus(String printSn){
         Map<String, String> params = new HashMap<>();
         params.put("user", PrintConfig.fe_USER);
         String time = String.valueOf(System.currentTimeMillis() / 1000);
@@ -76,12 +89,7 @@ public class FePrintService {
         return feStatusResp;
     }
 
-    /**
-     * 打印订单
-     *
-     * @param printDeviceDto
-     * @param printOrderDto
-     */
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto) {
         Map<String, String> params = new HashMap<>();
         params.put("user", PrintConfig.fe_USER);
@@ -126,7 +134,6 @@ public class FePrintService {
         }
     }
 
-
     /**
      * 生成签名字符串
      *
@@ -138,22 +145,6 @@ public class FePrintService {
         return s;
     }
 
-    /**
-     * 删除打印机
-     * @param deviceSn
-     */
-    public void deleteSn(String deviceSn) {
-        Map<String, String> params = new HashMap<>();
-        params.put("user", PrintConfig.fe_USER);
-        String time = String.valueOf(System.currentTimeMillis() / 1000);
-        params.put("stime", time);
-        params.put("sig", signature(time));
-        params.put("apiname", "Open_printerDelList");
-        params.put("snlist", deviceSn);
-        String result = HttpClient.post(PrintConfig.fe_URL, params);
-        log.info("飞蛾删除打印机返回结果"+result);
-    }
-
     public static String asciiToString(String value)
     {
         StringBuffer sbu = new StringBuffer();

+ 15 - 20
lb-third/lb-third-print/src/main/java/com/ydd/third/print/jiaboyun/service/JBYPrintService.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ydd.common.utils.StringUtils;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.jiaboyun.config.Config;
 import com.ydd.third.print.jiaboyun.utils.JBYApi;
@@ -15,6 +14,7 @@ import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
+import com.ydd.third.print.service.PrintService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.stereotype.Service;
@@ -32,15 +32,14 @@ import java.util.Map;
  */
 @Service
 @Slf4j
-public class JBYPrintService {
+public class JBYPrintService implements PrintService {
     static PrintUtil p = new PrintUtil();
 
-    /***
-     * 添加打印机
-     * @param deviceSn
-     * @param name
-     */
-    public String addPrintSn(String deviceSn, String name) {
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String name = printDeviceDto.getName();
+
         Map<String, String> params = new HashMap<String, String>();
 
         String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
@@ -63,13 +62,10 @@ public class JBYPrintService {
         }
     }
 
-    /**
-     * 查询打印机状态
-     *
-     * @param deviceSn
-     * @return
-     */
-    public PrintStatusResp getPrintStatus(String deviceSn) {
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+
         PrintStatusResp resp = new PrintStatusResp();
         Map<String, String> params = new HashMap<String, String>();
 
@@ -98,6 +94,7 @@ public class JBYPrintService {
         return resp;
     }
 
+    @Override
     public void deleteSn(String deviceSn) {
         Map<String, String> params = new HashMap<String, String>();
 
@@ -111,11 +108,8 @@ public class JBYPrintService {
         String result = JBYRequest.sendPost(JBYApi.BASE_URL + JBYApi.delete, params);
         log.info("删除佳博云"+result);
     }
-    /***
-     * 打印
-     * @param printOrderDto
-     * @param printDeviceDto
-     */
+
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto) {
         String content="";
         if (printDeviceDto.getPrintCustomerCount()>0){
@@ -141,6 +135,7 @@ public class JBYPrintService {
         String result = JBYRequest.sendPost(JBYApi.BASE_URL + JBYApi.print, params);
         log.info("佳博云打印返回--->" + result);
     }
+
     private static String printerCustomerContent(PrintOrderDto printOrderDto){
         try {
             String content= "<gpWord Align=1 Bold=0 Wsize=1 Hsize=1 Reverse=0 Underline=0>#"+printOrderDto.getDaySeq()+ printOrderDto.getOrderSource() + "(顾客联)</gpWord><gpBr/>";

+ 5 - 1
lb-third/lb-third-print/src/main/java/com/ydd/third/print/request/PrintDeviceDto.java

@@ -1,6 +1,5 @@
 package com.ydd.third.print.request;
 
-import com.ydd.common.annotation.Excel;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -31,6 +30,11 @@ public class PrintDeviceDto implements Serializable {
     private Integer deviceType;
 
     /**
+     * 设备名称
+     */
+    private String name;
+
+    /**
      * 打印接单打印:1->打开,0->关闭
      */
     private Integer openOrderPrint;

+ 44 - 0
lb-third/lb-third-print/src/main/java/com/ydd/third/print/service/PrintService.java

@@ -0,0 +1,44 @@
+package com.ydd.third.print.service;
+
+import com.ydd.third.print.request.PrintDeviceDto;
+import com.ydd.third.print.request.PrintOrderDto;
+import com.ydd.third.print.response.PrintStatusResp;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ *  打印机接口类
+ * @author 叶君翔
+ * @date 2021/11/22 16:21
+ */
+public interface PrintService {
+
+    /**
+     * 添加打印机
+     * @param printDeviceDto 打印机属性(deviceSn, deviceSecret, name ...)
+     * @return 添加是否成功
+     */
+    String addPrintSn(PrintDeviceDto printDeviceDto);
+
+    /**
+     * 删除打印设备
+     * @param deviceSn 打印机编号
+     */
+    void deleteSn(String deviceSn);
+
+    /**
+     * 获取打印机状态
+     * @param printDeviceDto 打印机属性(deviceSn, deviceSecret ...)
+     * @return 打印机状态
+     */
+    PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto);
+
+
+    /**
+     * 打印外卖订单
+     * @param printOrderDto 待打印订单
+     * @param printDeviceDto 打印设备
+     */
+    @Async
+    void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto);
+
+}

+ 0 - 37
lb-third/lb-third-print/src/main/java/com/ydd/third/print/service/Test.java

@@ -1,37 +0,0 @@
-package com.ydd.third.print.service;
-
-import java.math.BigDecimal;
-
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import com.ydd.third.print.feie.service.FePrintService;
-import com.ydd.third.print.request.PrintDeviceDto;
-import com.ydd.third.print.request.PrintOrderDto;
-import com.ydd.third.print.request.PrintOrderGoodsDto;
-
-/**
- * @author douya
- * @description
- * @date 2021/3/15
- */
-public class Test {
-
-    public static void main(String[] args) {
-        List<String> strings = new ArrayList<>();
-        strings.add("a");
-        strings.add("b");
-        strings.add("c");
-        strings.add("d");
-        strings.remove(0);
-        strings.add("f");
-        System.out.printf(strings.toString());
-//        fePrintService.printOrder(printOrderDto, printDeviceDto);
-
-    }
-
-
-}

+ 26 - 122
lb-third/lb-third-print/src/main/java/com/ydd/third/print/service/UnifiedPrintService.java

@@ -1,17 +1,10 @@
 package com.ydd.third.print.service;
 
 import com.ydd.ecloud.core.enums.StatusEnum;
-import com.ydd.third.print.enums.PrintDeviceType;
-import com.ydd.third.print.feie.service.FePrintService;
-import com.ydd.third.print.jiaboyun.service.JBYPrintService;
+import com.ydd.third.print.factory.StrategyFactory;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.response.PrintStatusResp;
-import com.ydd.third.print.shangpengyun.service.SPYPrintService;
-import com.ydd.third.print.xinhuayun.service.XHYPrintService;
-import com.ydd.third.print.yilian.service.YlyPrintService;
-import com.ydd.third.print.youshengyun.service.YSYPrintService;
-import com.ydd.third.print.zhongwuyun.service.ZWYPrintService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -30,66 +23,27 @@ import java.util.List;
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 public class UnifiedPrintService {
 
-    private final FePrintService fePrintService;
-
-    private final YlyPrintService ylyPrintService;
-
-    private final ZWYPrintService zwyPrintService;
-
-    private final XHYPrintService xhyPrintService;
-
-    private final JBYPrintService jbyPrintService;
-
-    private final SPYPrintService spyPrintService;
-
-    private final YSYPrintService ysyPrintService;
-
     /**
      * 添加打印机
      *
      * @param deviceSn
      * @param type
      */
-    public String  addPrintSn(Integer type, String deviceSn, String deviceSecret, String name) {
+    public String addPrintSn(Integer type, String deviceSn, String deviceSecret, String name) {
         String result ="ok";
-        if (type.equals(PrintDeviceType.feie.type)) {
-            result =  fePrintService.addPrintSn(deviceSn, deviceSecret,name);
-        }
-        if (type.equals(PrintDeviceType.yly.type)){
-            result = ylyPrintService.addPrintSn(deviceSn, deviceSecret);
-        }
-        if (type.equals(PrintDeviceType.xhy.type)) {
-            result =  xhyPrintService.addPrintSn(deviceSn,name);
-        }
-        if (type.equals(PrintDeviceType.jby.type)){
-            result =  jbyPrintService.addPrintSn(deviceSn,name);
-        }
-        if (type.equals(PrintDeviceType.sp.type)){
-            result =   spyPrintService.addPrintSn(deviceSn,deviceSecret,name);
-        }
-        return result;
-        //中午云  优声云  没有接口不需要绑定
-//        if (type.equals(PrintDeviceType.zwy.type)){
-//
-//        }
+
+        PrintDeviceDto printDeviceDto = new PrintDeviceDto();
+        printDeviceDto.setDeviceSn(deviceSn);
+        printDeviceDto.setDeviceSecret(deviceSecret);
+        printDeviceDto.setName(name);
+
+        PrintService printService = StrategyFactory.getInstance().creator(type);
+        return printService.addPrintSn(printDeviceDto);
     }
 
-    public void deleteSn(String deviceSn,Integer type){
-        if (type.equals(PrintDeviceType.feie.type)) {
-            fePrintService.deleteSn(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.yly.type)){
-            ylyPrintService.deleteSn(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.xhy.type)){
-            xhyPrintService.deleteSn(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.jby.type)){
-            jbyPrintService.deleteSn(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.sp.type)){
-            spyPrintService.deleteSn(deviceSn);
-        }
+    public void deleteSn(String deviceSn, Integer type){
+        PrintService printService = StrategyFactory.getInstance().creator(type);
+        printService.deleteSn(deviceSn);
     }
 
     /**
@@ -99,28 +53,12 @@ public class UnifiedPrintService {
      * @param type
      */
     public PrintStatusResp printStatus(Integer type, String deviceSn, String deviceSecret) {
-        if (type.equals(PrintDeviceType.feie.type)) {
-            return fePrintService.printStatus(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.yly.type)){
-            return ylyPrintService.getPrintStatus(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.zwy.type)){
-            return zwyPrintService.getPrintStatus(deviceSn,deviceSecret);
-        }
-        if (type.equals(PrintDeviceType.xhy.type)){
-            return xhyPrintService.getPrintStatus(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.jby.type)){
-            return jbyPrintService.getPrintStatus(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.sp.type)){
-            return spyPrintService.getPrintStatus(deviceSn);
-        }
-        if (type.equals(PrintDeviceType.ys.type)){
-            return ysyPrintService.getPrintStatus(deviceSn,deviceSecret);
-        }
-        return null;
+        PrintDeviceDto printDeviceDto = new PrintDeviceDto();
+        printDeviceDto.setDeviceSn(deviceSn);
+        printDeviceDto.setDeviceSecret(deviceSecret);
+
+        PrintService printService = StrategyFactory.getInstance().creator(type);
+        return printService.getPrintStatus(printDeviceDto);
     }
 
 
@@ -137,34 +75,17 @@ public class UnifiedPrintService {
             printOrderDto.setCreateTime(com.ydd.third.common.utils.DateUtils.format(new Date(), com.ydd.third.common.utils.DateUtils.DATE_TIME_PATTERN));
         }
         for (PrintDeviceDto printDeviceDto : deviceDtoList) {
-            if (printOrderDto.getOrderStatus() == null){
+            if (printOrderDto.getOrderStatus() == null) {
                 if (!isforce && printDeviceDto.getOpenOrderPrint().equals(StatusEnum.off.value)) {
                     continue;
                 }
-            }else {
-                if (printDeviceDto.getOpenOrderCancelPrint().equals(StatusEnum.off.value)){
+            } else {
+                if (printDeviceDto.getOpenOrderCancelPrint().equals(StatusEnum.off.value)) {
                     continue;
                 }
             }
-            if (printDeviceDto.getDeviceType().equals(PrintDeviceType.feie.type)) {
-                fePrintService.printOrder(printOrderDto, printDeviceDto);
-            }
-            if (printDeviceDto.getDeviceType().equals(PrintDeviceType.yly.type)) {
-                ylyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }
-            if (printDeviceDto.getDeviceType().equals(PrintDeviceType.zwy.type)) {
-                zwyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }
-            if (printDeviceDto.getDeviceType().equals(PrintDeviceType.xhy.type)) {
-                xhyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }if (printDeviceDto.getDeviceType().equals(PrintDeviceType.jby.type)){
-                jbyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }
-            if (printDeviceDto.getDeviceType().equals(PrintDeviceType.sp.type)){
-                spyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }  if (printDeviceDto.getDeviceType().equals(PrintDeviceType.ys.type)){
-                ysyPrintService.printOrder(printOrderDto, printDeviceDto);
-            }
+            PrintService printService = StrategyFactory.getInstance().creator(printDeviceDto.getDeviceType());
+            printService.printOrder(printOrderDto, printDeviceDto);
         }
 
     }
@@ -176,24 +97,7 @@ public class UnifiedPrintService {
      */
    // @Async
     public void printTestOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto,Long shopId, Boolean isforce) {
-        if (printDeviceDto.getDeviceType().equals(PrintDeviceType.feie.type)) {
-            fePrintService.printOrder(printOrderDto, printDeviceDto);
-        }
-        if (printDeviceDto.getDeviceType().equals(PrintDeviceType.yly.type)) {
-            ylyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }
-        if (printDeviceDto.getDeviceType().equals(PrintDeviceType.zwy.type)) {
-            zwyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }
-        if (printDeviceDto.getDeviceType().equals(PrintDeviceType.xhy.type)) {
-            xhyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }if (printDeviceDto.getDeviceType().equals(PrintDeviceType.jby.type)){
-            jbyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }
-        if (printDeviceDto.getDeviceType().equals(PrintDeviceType.sp.type)){
-            spyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }  if (printDeviceDto.getDeviceType().equals(PrintDeviceType.ys.type)){
-            ysyPrintService.printOrder(printOrderDto, printDeviceDto);
-        }
+        PrintService printService = StrategyFactory.getInstance().creator(printDeviceDto.getDeviceType());
+        printService.printOrder(printOrderDto, printDeviceDto);
     }
 }

+ 16 - 17
lb-third/lb-third-print/src/main/java/com/ydd/third/print/shangpengyun/service/SPYPrintService.java

@@ -2,14 +2,13 @@ package com.ydd.third.print.shangpengyun.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ydd.common.utils.StringUtils;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
-import com.ydd.third.print.shangpengyun.config.SPYConfig;
+import com.ydd.third.print.service.PrintService;
 import com.ydd.third.print.shangpengyun.utils.SPYApi;
 import com.ydd.third.print.shangpengyun.utils.SPYRequest;
 import com.ydd.third.print.xinhuayun.utils.NoteFormatter;
@@ -21,7 +20,6 @@ import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -32,16 +30,16 @@ import java.util.List;
  */
 @Service
 @Slf4j
-public class SPYPrintService {
+public class SPYPrintService implements PrintService {
 
     static PrintUtil p = new PrintUtil();
 
-    /***
-     * 添加打印机
-     * @param deviceSn
-     * @param deviceSecret
-     */
-    public String addPrintSn(String deviceSn, String deviceSecret,String name) {
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String deviceSecret = printDeviceDto.getDeviceSecret();
+        String name = printDeviceDto.getName();
+
         String resp ="ok";
         ArrayList<NameValuePair> params = new ArrayList<>();
         params.add(new BasicNameValuePair("sn", deviceSn));
@@ -57,13 +55,11 @@ public class SPYPrintService {
         }
         return resp;
     }
-    /**
-     * 查询打印机状态
-     *
-     * @param deviceSn
-     * @return
-     */
-    public PrintStatusResp getPrintStatus(String deviceSn) {
+
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+
         PrintStatusResp resp = new PrintStatusResp();
         ArrayList<NameValuePair> params = new ArrayList<>();
         params.add(new BasicNameValuePair("sn", deviceSn));
@@ -82,6 +78,7 @@ public class SPYPrintService {
         return resp;
     }
 
+    @Override
     public void deleteSn(String deviceSn) {
         try {
             ArrayList<NameValuePair> params = new ArrayList<>();
@@ -92,6 +89,8 @@ public class SPYPrintService {
             e.printStackTrace();
         }
     }
+
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto){
         String content="";
         if (printDeviceDto.getPrintCustomerCount()>0){

+ 18 - 31
lb-third/lb-third-print/src/main/java/com/ydd/third/print/xinhuayun/service/XHYPrintService.java

@@ -3,25 +3,23 @@ package com.ydd.third.print.xinhuayun.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.ydd.common.utils.StringUtils;
-import com.ydd.ecloud.core.enums.StatusEnum;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
-import com.ydd.third.print.xinhuayun.utils.*;
+import com.ydd.third.print.service.PrintService;
+import com.ydd.third.print.xinhuayun.utils.Config;
+import com.ydd.third.print.xinhuayun.utils.ErrorCodeEnum;
+import com.ydd.third.print.xinhuayun.utils.HttpClientUtil;
+import com.ydd.third.print.xinhuayun.utils.XHYApi;
 import com.ydd.third.print.xinhuayun.vo.*;
-import com.ydd.third.print.yilian.tag.FontLRFormatTag;
-import com.ydd.third.print.yilian.tag.LineFormatTag;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.List;
 
 import static com.ydd.third.print.xinhuayun.utils.XHYApi.BASE_URL;
@@ -35,15 +33,14 @@ import static com.ydd.third.print.xinhuayun.utils.XHYApi.BASE_URL;
  */
 @Service
 @Slf4j
-public class XHYPrintService {
+public class XHYPrintService implements PrintService {
     static PrintUtil p = new PrintUtil();
 
-    /***
-     * 添加打印机
-     * @param deviceSn
-     * @param name
-     */
-    public String addPrintSn(String deviceSn, String name) {
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String name = printDeviceDto.getName();
+
         AddPrinterRequestItem[] items = new AddPrinterRequestItem[1];
         AddPrinterRequestItem item = new AddPrinterRequestItem();
         item.setName(name);
@@ -67,13 +64,10 @@ public class XHYPrintService {
         }
     }
 
-    /**
-     * 查询打印机状态
-     *
-     * @param deviceSn
-     * @return
-     */
-    public PrintStatusResp getPrintStatus(String deviceSn) {
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+
         PrintStatusResp feStatusResp = new PrintStatusResp();
         PrinterRequest restRequest = new PrinterRequest();
         restRequest.setSn(deviceSn);
@@ -92,12 +86,9 @@ public class XHYPrintService {
         return feStatusResp;
     }
 
-    /**
-     * 删除打印机
-     * @param deviceSn
-     */
+    @Override
     public void deleteSn(String deviceSn) {
-        String str []=new String[1];
+        String[] str = new String[1];
         str[0]=deviceSn;
         DelPrinterRequest delPrinterRequest=new DelPrinterRequest();
         Config.createRequestHeader(delPrinterRequest);
@@ -108,11 +99,7 @@ public class XHYPrintService {
         log.info("删除芯烨云打印机返回"+resp);
     }
 
-    /***
-     * 打印
-     * @param printOrderDto
-     * @param printDeviceDto
-     */
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto){
         String content="";
         if (printDeviceDto.getPrintCustomerCount()>0){

+ 102 - 95
lb-third/lb-third-print/src/main/java/com/ydd/third/print/yilian/service/YlyPrintService.java

@@ -9,6 +9,7 @@ import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
+import com.ydd.third.print.service.PrintService;
 import com.ydd.third.print.yilian.dto.Format;
 import com.ydd.third.print.yilian.tag.*;
 import com.ydd.third.print.yilian.utils.CloudPrintUtils;
@@ -25,7 +26,7 @@ import java.math.BigDecimal;
  */
 @Service
 @Slf4j
-public class YlyPrintService {
+public class YlyPrintService implements PrintService {
 
     static PrintUtil p = new PrintUtil();
     /**
@@ -34,37 +35,92 @@ public class YlyPrintService {
     @Resource
     private RedisCache redisCache;
 
-    /**
-     * 获取易联云访问token
-     *
-     * @return
-     */
-    public void getToken() {
-       // String accessToken = null;
-        String accessToken = redisCache.getCacheObject(PrintConfig.cloud_token_key);
+
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String deviceSecret = printDeviceDto.getDeviceSecret();
+
+        getToken();
         CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
-        CloudPrintUtils.token = accessToken;
-        if (StringUtils.isBlank(accessToken)) {
-            CloudPrintUtils.getInstance().getFreedomToken();
-            accessToken = CloudPrintUtils.token;
-            String refreshToken = CloudPrintUtils.refresh_token;
-            redisCache.setCacheObject(PrintConfig.cloud_token_key, accessToken);
-            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, refreshToken);
+        String  result = CloudPrintUtils.getInstance().addPrinter(deviceSn, deviceSecret);
+        log.info("易联云添加打印机返回---"+result);
+        JSONObject json1 = JSONObject.parseObject(result);
+        if(json1.get("error").toString().equals("18")){
+            CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
+            CloudPrintUtils.getInstance().refreshToken();
+            redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
+            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
+            result = CloudPrintUtils.getInstance().addPrinter(deviceSn, deviceSecret);
+        }
+        JSONObject json = JSONObject.parseObject(result);
+        log.info("易联云绑定返回result---->"+result);
+        if (!json.get("error").toString().equals("0")) {
+            return json.getString("error_description");
+        }else{
+            return "ok";
         }
     }
 
-    /**
-     * 打印订单
-     *
-     * @param printDeviceDto
-     * @param printOrderDto
-     */
+    @Override
+    public void deleteSn(String deviceSn) {
+        try {
+            getToken();
+            CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
+            String result = CloudPrintUtils.getInstance().deletePrinter(deviceSn);
+            JSONObject json1 = JSONObject.parseObject(result);
+            if (json1.getString("error").equals("18")){
+                CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
+                CloudPrintUtils.getInstance().refreshToken();
+                redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
+                redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
+                result=CloudPrintUtils.getInstance().deletePrinter(deviceSn);
+                log.info("易联云删除result"+result);
+            }
+        } catch (Exception e) {
+            log.info("易联云删除result出错");
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String machine_code = printDeviceDto.getDeviceSn();
+
+        PrintStatusResp resp = new PrintStatusResp();
+        getToken();
+        CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
+        String result = CloudPrintUtils.getInstance().getPrintStatus(machine_code);
+        JSONObject json = JSONObject.parseObject(result);
+        log.info("易联云打印机返回---"+json);
+        //token过期
+        if(json.get("error").toString().equals("18")){
+            CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
+            CloudPrintUtils.getInstance().refreshToken();
+            redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
+            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
+            result = CloudPrintUtils.getInstance().getPrintStatus(machine_code);
+        }
+        JSONObject json1 = JSONObject.parseObject(result);
+        if (json1.get("error").toString().equals("0")) {
+            String body = json1.get("body").toString();
+            JSONObject bodyjson = JSONObject.parseObject(body);
+            if (bodyjson.get("state").toString().equals("1")) {
+                resp.setData("在线,工作状态正常。");
+            } else if (bodyjson.get("state").toString().equals("0")) {
+                resp.setData("离线。");
+            }
+        }
+        return resp;
+    }
+
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto) {
         getToken();
         //打印小票
         String content = getPrintContent(printOrderDto,printDeviceDto);
         log.info("易连云打印请求:"+content);
-     //   CloudPrintUtils.getInstance().addPrinter(printDeviceDto.getDeviceSn(), LAVApi.getSin());
+        //   CloudPrintUtils.getInstance().addPrinter(printDeviceDto.getDeviceSn(), LAVApi.getSin());
 //        String result = CloudPrintUtils.getInstance().print(printDeviceDto.getDeviceSn(), content, printOrderDto.getOrderidView());
 //        JSONObject jsonObject = JSONObject.parseObject(result);
 //        log.info("易连云返回+"+jsonObject);
@@ -75,7 +131,29 @@ public class YlyPrintService {
 //            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
 //             result = CloudPrintUtils.getInstance().print(printDeviceDto.getDeviceSn(), content, printOrderDto.getOrderidView());
 //        }
-   //     log.info("易连云返回:" + result);
+        //     log.info("易连云返回:" + result);
+    }
+
+
+
+
+    /**
+     * 获取易联云访问token
+     *
+     * @return
+     */
+    public void getToken() {
+       // String accessToken = null;
+        String accessToken = redisCache.getCacheObject(PrintConfig.cloud_token_key);
+        CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
+        CloudPrintUtils.token = accessToken;
+        if (StringUtils.isBlank(accessToken)) {
+            CloudPrintUtils.getInstance().getFreedomToken();
+            accessToken = CloudPrintUtils.token;
+            String refreshToken = CloudPrintUtils.refresh_token;
+            redisCache.setCacheObject(PrintConfig.cloud_token_key, accessToken);
+            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, refreshToken);
+        }
     }
 
 
@@ -157,34 +235,6 @@ public class YlyPrintService {
         return "";
     }
 
-    public PrintStatusResp getPrintStatus(String machine_code) {
-        PrintStatusResp resp = new PrintStatusResp();
-        getToken();
-        CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
-        String result = CloudPrintUtils.getInstance().getPrintStatus(machine_code);
-        JSONObject json = JSONObject.parseObject(result);
-        log.info("易联云打印机返回---"+json);
-        //token过期
-        if(json.get("error").toString().equals("18")){
-            CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
-            CloudPrintUtils.getInstance().refreshToken();
-            redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
-            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
-            result = CloudPrintUtils.getInstance().getPrintStatus(machine_code);
-        }
-        JSONObject json1 = JSONObject.parseObject(result);
-        if (json1.get("error").toString().equals("0")) {
-            String body = json1.get("body").toString();
-            JSONObject bodyjson = JSONObject.parseObject(body);
-            if (bodyjson.get("state").toString().equals("1")) {
-                resp.setData("在线,工作状态正常。");
-            } else if (bodyjson.get("state").toString().equals("0")) {
-                resp.setData("离线。");
-            }
-        }
-        return resp;
-    }
-
     public void printerKitrContent(Format format, PrintOrderDto order, String printTime) {
         FontLargeFormatTag fontLargeFormatTag = new FontLargeFormatTag("","2");
         fontLargeFormatTag.prefixTag();
@@ -487,49 +537,6 @@ public class YlyPrintService {
         }
     }
 
-    public String addPrintSn(String deviceSn, String deviceSecret) {
-
-        getToken();
-        CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
-       String  result = CloudPrintUtils.getInstance().addPrinter(deviceSn, deviceSecret);
-       log.info("易联云添加打印机返回---"+result);
-        JSONObject json1 = JSONObject.parseObject(result);
-        if(json1.get("error").toString().equals("18")){
-            CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
-            CloudPrintUtils.getInstance().refreshToken();
-            redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
-            redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
-            result = CloudPrintUtils.getInstance().addPrinter(deviceSn, deviceSecret);
-        }
-        JSONObject json = JSONObject.parseObject(result);
-        log.info("易联云绑定返回result---->"+result);
-        if (!json.get("error").toString().equals("0")) {
-            return json.getString("error_description");
-        }else{
-            return "ok";
-        }
-    }
-
-    public void deleteSn(String deviceSn) {
-        try {
-            getToken();
-            CloudPrintUtils.getInstance().init(PrintConfig.cloud_clientId, PrintConfig.cloud_clientSecret);
-            String result = CloudPrintUtils.getInstance().deletePrinter(deviceSn);
-            JSONObject json1 = JSONObject.parseObject(result);
-            if (json1.getString("error").equals("18")){
-                CloudPrintUtils.refresh_token=redisCache.getCacheObject(PrintConfig.cloud_refresh_token_key);
-                CloudPrintUtils.getInstance().refreshToken();
-                redisCache.setCacheObject(PrintConfig.cloud_token_key, CloudPrintUtils.token);
-                redisCache.setCacheObject(PrintConfig.cloud_refresh_token_key, CloudPrintUtils.refresh_token);
-                result=CloudPrintUtils.getInstance().deletePrinter(deviceSn);
-                log.info("易联云删除result"+result);
-            }
-        } catch (Exception e) {
-            log.info("易联云删除result出错");
-            e.printStackTrace();
-        }
-    }
-
     public void  printTxt( String content,String deviceSn,String orderId) {
         getToken();
 

+ 19 - 19
lb-third/lb-third-print/src/main/java/com/ydd/third/print/youshengyun/service/YSYPrintService.java

@@ -1,16 +1,14 @@
 package com.ydd.third.print.youshengyun.service;
 
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ydd.common.utils.StringUtils;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
+import com.ydd.third.print.service.PrintService;
 import com.ydd.third.print.youshengyun.config.YSYApi;
 import com.ydd.third.print.youshengyun.config.YSYConfig;
 import com.ydd.third.print.youshengyun.utils.SignUtils;
@@ -20,7 +18,6 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
@@ -36,23 +33,30 @@ import java.util.Map;
  */
 @Service
 @Slf4j
-public class YSYPrintService {
+public class YSYPrintService implements PrintService {
     static PrintUtil p = new PrintUtil();
 
-    /**
-     * 查询打印机状态
-     *
-     * @param deviceSn
-     * @return
-     */
-    public PrintStatusResp getPrintStatus(String deviceSn, String devicesecret) {
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        return null;
+    }
+
+    @Override
+    public void deleteSn(String deviceSn) {
+    }
+
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String deviceSecret = printDeviceDto.getDeviceSecret();
+
         PrintStatusResp resp = new PrintStatusResp();
         Map<String, String> params = new HashMap<String, String>();
         String timestamp = String.valueOf(Calendar.getInstance().getTimeInMillis()/1000);
         params.put("appid", YSYConfig.appid);
         params.put("timestamp", timestamp);
         params.put("deviceid", deviceSn);
-        params.put("devicesecret",devicesecret);
+        params.put("devicesecret",deviceSecret);
         String sign = SignUtils.getSign(params,YSYConfig.appsecret);
         params.put("sign",sign);
         System.out.println("请求的数据"+params);
@@ -70,12 +74,7 @@ public class YSYPrintService {
         return resp;
     }
 
-
-    /***
-     * 打印
-     * @param printOrderDto
-     * @param printDeviceDto
-     */
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto) {
        // String content = "";
         if (printDeviceDto.getPrintCustomerCount() > 0) {
@@ -113,6 +112,7 @@ public class YSYPrintService {
         String result =  YSYRequest.doPostJson(YSYApi.BASE_URL + YSYApi.print,  JSONObject.toJSONString(params));
         log.info("优声云打印返回"+result);
     }
+
     private static String printerCustomerContent(PrintOrderDto order) {
         try {
             String content = "<B1><S2><C>#" + order.getDaySeq() + order.getOrderSource() + "(顾客联)</C></S2></B1><RN>";

+ 18 - 13
lb-third/lb-third-print/src/main/java/com/ydd/third/print/zhongwuyun/service/ZWYPrintService.java

@@ -2,13 +2,13 @@ package com.ydd.third.print.zhongwuyun.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ydd.common.utils.StringUtils;
-import com.ydd.third.print.feie.resp.FeStatusResp;
 import com.ydd.third.print.feie.utils.PrintUtil;
 import com.ydd.third.print.request.PrintDeviceDto;
 import com.ydd.third.print.request.PrintOrderActDto;
 import com.ydd.third.print.request.PrintOrderDto;
 import com.ydd.third.print.request.PrintOrderGoodsDto;
 import com.ydd.third.print.response.PrintStatusResp;
+import com.ydd.third.print.service.PrintService;
 import com.ydd.third.print.zhongwuyun.utils.PrinterUtil;
 import com.ydd.third.print.zhongwuyun.utils.ZWYApi;
 import lombok.extern.slf4j.Slf4j;
@@ -28,17 +28,24 @@ import java.util.List;
  */
 @Service
 @Slf4j
-public class ZWYPrintService {
+public class ZWYPrintService implements PrintService {
 
     static PrintUtil p = new PrintUtil();
-    /**
-     * 查询打印机状态
-     *
-     * @param deviceSn
-     * @param deviceSecret
-     * @return
-     */
-    public PrintStatusResp getPrintStatus(String deviceSn, String deviceSecret) {
+
+    @Override
+    public String addPrintSn(PrintDeviceDto printDeviceDto) {
+        return null;
+    }
+
+    @Override
+    public void deleteSn(String deviceSn) {
+    }
+
+    @Override
+    public PrintStatusResp getPrintStatus(PrintDeviceDto printDeviceDto) {
+        String deviceSn = printDeviceDto.getDeviceSn();
+        String deviceSecret = printDeviceDto.getDeviceSecret();
+
         PrintStatusResp resp = new PrintStatusResp();
         String sign = PrinterUtil.getSign(deviceSn, deviceSecret, "");
         String parms = "appid=" + PrinterUtil.appid + "&sign=" + sign + "&timestamp=" + PrinterUtil.getTimestamp() + "&deviceid=" +
@@ -58,8 +65,8 @@ public class ZWYPrintService {
         return resp;
     }
 
+    @Override
     public void printOrder(PrintOrderDto printOrderDto, PrintDeviceDto printDeviceDto) {
-
         if (printDeviceDto.getPrintCustomerCount() > 0) {
             String content = printerCustomerContent(printOrderDto) + "<RN>";
             print(printDeviceDto, content);
@@ -72,10 +79,8 @@ public class ZWYPrintService {
             String content = printerKitrContent(printOrderDto) + "<RN>";
             print(printDeviceDto, content);
         }
-
     }
 
-
     public static String printerCustomerContent(PrintOrderDto order) {
         try {
     //        String content = "<MS>6</MS><B1><S2><C>#" + order.getDaySeq() + "</C></S2></B1><RN>";