Explorar el Código

PDA打印代理模块兼容客户码和钢印码

wangxichen hace 1 semana
padre
commit
2eb3488f44

+ 11 - 0
src/main/java/com/jeesite/modules/mes/service/MesLaserService.java

@@ -105,6 +105,17 @@ public class MesLaserService {
 	}
 
 	/**
+	 * PDA 扫软客户码打流转卡接口:把客户码对应的记录标记为拉铆待打印(rivet_print_status=1)
+	 * @return UPDATE 影响行数,0 表示 customer_sn 不存在
+	 */
+	public int markRvtPrintByCustomerSn(String customerSn) {
+		return jdbcTemplate.update(
+				"UPDATE mes_product_laser SET rivet_print_status=1, print_msg=NULL, update_date=now() "
+						+ "WHERE customer_sn=? AND rivet_print_status IN (0, 3)",
+				customerSn);
+	}
+
+	/**
 	 * 拉取拉铆待处理记录 —— 包含待打印(=1)和已失败(=3),按创建时间升序 FIFO。
 	 * 客户端区分处理:
 	 *   status=1 → 自动打印

+ 14 - 6
src/main/java/com/jeesite/modules/mes/web/MesLaserController.java

@@ -151,9 +151,10 @@ public class MesLaserController extends BaseController {
 	}
 
 	/**
-	 * PDA 扫钢印打流转卡:把 steelSn 对应记录标记为拉铆待打印。
-	 * 请求参数(form):steelSn
-	 * 返回 data.rows = UPDATE 影响行数,0 表示 steelSn 不存在
+	 * PDA 扫码打流转卡:把 steelSn 对应记录标记为拉铆待打印。
+	 * 请求参数(form):steelSn —— 内容可以是钢印码,也可以是软客户码(以 + 开头视为客户码)。
+	 * PDA 端不用改,后端根据内容自动路由到 steel_sn 或 customer_sn 查询。
+	 * 返回 data.rows = UPDATE 影响行数,0 表示未找到或状态不允许重复标记
 	 */
 	@PostMapping(value = "markRvtPrint")
 	@ResponseBody
@@ -165,8 +166,15 @@ public class MesLaserController extends BaseController {
 			resp.setMessage("steelSn 不能为空");
 			return resp;
 		}
+
+		// 自动判定:以 + 开头视为软客户码,否则按钢印码
+		boolean byCustomer = steelSn.startsWith("+");
+		String snType = byCustomer ? "客户码" : "钢印码";
+
 		try {
-			int rows = mesLaserService.markRvtPrint(steelSn);
+			int rows = byCustomer
+					? mesLaserService.markRvtPrintByCustomerSn(steelSn)
+					: mesLaserService.markRvtPrint(steelSn);
 			Map<String, Object> data = new HashMap<>();
 			data.put("rows", rows);
 			resp.setData(data);
@@ -175,10 +183,10 @@ public class MesLaserController extends BaseController {
 				resp.setMessage("已标记为拉铆待打印");
 			} else {
 				resp.setResult(Global.FALSE);
-				resp.setMessage("未找到该钢印码或状态不允许重复标记:" + steelSn);
+				resp.setMessage("未找到该" + snType + "或状态不允许重复标记:" + steelSn);
 			}
 		} catch (Exception e) {
-			logger.error("markRvtPrint 失败:steelSn=" + steelSn, e);
+			logger.error("markRvtPrint 失败:" + snType + "=" + steelSn, e);
 			resp.setResult(Global.FALSE);
 			resp.setMessage("标记失败:" + e.getMessage());
 		}