Explorar el Código

refactor: 简化打印流程,移除无用字段

主要改动:
- LaserFlowManager: lineSn 改为 XT
- FlowCardData: 只保留 sn 和 steelSn 两个字段(PDF 模板实际只用这两个)
- FlowCardRenderer: 移除降级方案(renderSimple/drawSimple)
- PrintHelper.printFlowCard(): 参数简化为 (customerSn, steelSn)
- 移除无用字段:product、opNo、batch、date、operator、remark

原因:
- 服务端接口不返回时间字段
- PDF 模板渲染只使用钢印码和客户码
- 产品型号已包含在客户码前缀中(如 +KB60)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
wangxichen hace 1 semana
padre
commit
65d1722f61

+ 4 - 0
config/print.properties

@@ -0,0 +1,4 @@
+# OP40 工位打印机配置
+# 打印机类型: hp (激光打印机打流转卡) / tsc (热敏标签机) / none (不打印)
+printer.type=hp
+printer.name=HP LaserJet 3004

BIN
lib/mes-print.jar


+ 4 - 3
src/com/mes/laser/LaserFlowManager.java

@@ -3,6 +3,7 @@ package com.mes.laser;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.mes.ui.DataUtil;
+import com.mes.print.PrintHelper;
 
 import java.io.BufferedReader;
 import java.io.InputStream;
@@ -85,7 +86,7 @@ public class LaserFlowManager {
     private volatile boolean running = false;
 
     // ==== 配置项 ====
-    private String lineSn = "T9";
+    private String lineSn = "XT";
     private String prodCode = "T09";
     private long pollIntervalMs = 3000;
     private int batchSize = 10;
@@ -273,8 +274,8 @@ public class LaserFlowManager {
             DataUtil.ackPrint(customerSn, "NG", "客户端建档失败");
             return;
         }
-        // 2. 打印流转卡(PrinterJob.print 返回 = 任务提交系统队列成功 = 视为完成
-        boolean printOk = LaserCardPrintUtil.printCard(printerName, steelSn, customerSn);
+        // 2. 打印流转卡(通过 mes-print 模块,保留 PDF 模板 + 二维码格式
+        boolean printOk = PrintHelper.printFlowCard(customerSn, steelSn);
         // 3. ack:让服务端把 print_status 从 0 更新为 1
         if (printOk) {
             boolean ackOk = DataUtil.ackPrint(customerSn, "OK", null);

+ 9 - 21
src/com/mes/print/PrintHelper.java

@@ -5,9 +5,6 @@ import com.mes.print.PrinterException;
 import com.mes.print.model.FlowCardData;
 import com.mes.print.model.LabelData;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
 /**
  * 打印辅助类:封装 mes-print 模块调用
  *
@@ -21,14 +18,11 @@ public class PrintHelper {
     /**
      * 打印流转卡(用于 HP 激光打印机)
      *
-     * @param sn 产品序列号
-     * @param opNo 工位号(如 OP040A)
-     * @param batch 批次号
-     * @param operator 操作员
-     * @param remark 备注
+     * @param customerSn 客户码(序列号)
+     * @param steelSn 钢印码
      * @return 是否打印成功
      */
-    public static boolean printFlowCard(String sn, String opNo, String batch, String operator, String remark) {
+    public static boolean printFlowCard(String customerSn, String steelSn) {
         try {
             String type = Printer.getCurrentType();
             if ("none".equals(type)) {
@@ -42,16 +36,11 @@ public class PrintHelper {
             }
 
             FlowCardData data = new FlowCardData();
-            data.setSn(sn);
-            data.setProduct("+KB24"); // 产品型号,根据实际业务调整
-            data.setOpNo(opNo);
-            data.setBatch(batch != null ? batch : "");
-            data.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));
-            data.setOperator(operator != null ? operator : "");
-            data.setRemark(remark != null ? remark : "");
+            data.setSn(customerSn);
+            data.setSteelSn(steelSn != null ? steelSn : "");
 
             Printer.printFlowCard(data);
-            System.out.println("[打印] 流转卡打印成功: " + sn);
+            System.out.println("[打印] 流转卡打印成功: " + customerSn);
             return true;
 
         } catch (PrinterException e) {
@@ -114,11 +103,10 @@ public class PrintHelper {
      * 根据当前配置的打印机类型自动打印
      *
      * @param sn 产品序列号
-     * @param opNo 工位号
-     * @param operator 操作员
+     * @param steelSn 钢印码
      * @return 是否打印成功
      */
-    public static boolean autoPrint(String sn, String opNo, String operator) {
+    public static boolean autoPrint(String sn, String steelSn) {
         try {
             String type = Printer.getCurrentType();
 
@@ -126,7 +114,7 @@ public class PrintHelper {
                 System.out.println("[打印] 当前配置为不打印,跳过");
                 return true;
             } else if ("hp".equals(type)) {
-                return printFlowCard(sn, opNo, "", operator, "");
+                return printFlowCard(sn, steelSn);
             } else if ("tsc".equals(type)) {
                 return printLabel(sn, sn, sn, "产品标签", 1);
             } else {