|
@@ -0,0 +1,66 @@
|
|
|
|
|
+package shop.alien.store.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.github.anastaciocintra.escpos.EscPos;
|
|
|
|
|
+import com.github.anastaciocintra.escpos.Style;
|
|
|
|
|
+import shop.alien.entity.store.Receipt;
|
|
|
|
|
+import shop.alien.store.service.ReceiptPrinter;
|
|
|
|
|
+import java.net.Socket;
|
|
|
|
|
+import java.io.OutputStream;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+public class NetworkReceiptPrinter implements ReceiptPrinter {
|
|
|
|
|
+ private final String ip;
|
|
|
|
|
+ private final int port;
|
|
|
|
|
+
|
|
|
|
|
+ public NetworkReceiptPrinter(String ip, int port) {
|
|
|
|
|
+ this.ip = ip;
|
|
|
|
|
+ this.port = port;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void print(Receipt receipt) throws Exception {
|
|
|
|
|
+ try (Socket socket = new Socket(ip, port);
|
|
|
|
|
+ OutputStream out = socket.getOutputStream()) {
|
|
|
|
|
+
|
|
|
|
|
+ EscPos escpos = new EscPos(out);
|
|
|
|
|
+ doPrint(escpos, receipt);
|
|
|
|
|
+
|
|
|
|
|
+ escpos.cut(EscPos.CutMode.FULL);
|
|
|
|
|
+ escpos.flush();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void doPrint(EscPos escpos, Receipt receipt) throws Exception {
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+// escpos.setAlign(Style.Align.CENTER)
|
|
|
|
|
+// .setFontSize(Style.FontSize._2, Style.FontSize._2)
|
|
|
|
|
+// .writeLn("XX便利店")
|
|
|
|
|
+// .feed(1);
|
|
|
|
|
+//
|
|
|
|
|
+// escpos.setFontSize(Style.FontSize._1, Style.FontSize._1)
|
|
|
|
|
+// .setAlign(Style.Align.LEFT)
|
|
|
|
|
+// .writeLn("单号:" + receipt.getOrderNo())
|
|
|
|
|
+// .writeLn("时间:" + sdf.format(receipt.getCreateTime()))
|
|
|
|
|
+// .writeLn("------------------------------");
|
|
|
|
|
+//
|
|
|
|
|
+// for (ReceiptItem item : receipt.getItems()) {
|
|
|
|
|
+// escpos.writeLn(item.getName() + " ×" + item.getQty());
|
|
|
|
|
+// escpos.writeLn(String.format(" %s × %s = %s",
|
|
|
|
|
+// item.getPrice(), item.getQty(), item.getAmount()));
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// escpos.writeLn("------------------------------")
|
|
|
|
|
+// .setAlign(Style.Align.RIGHT)
|
|
|
|
|
+// .writeLn("合计:" + receipt.getTotalAmount())
|
|
|
|
|
+// .writeLn("支付:" + receipt.getPayType())
|
|
|
|
|
+// .feed(3);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|