|
|
@@ -113,7 +113,7 @@ public class CheckQualityStep extends AbstractStep {
|
|
|
case "NG":
|
|
|
return "该工件本工位已加工,结果:NG";
|
|
|
case "QD":
|
|
|
- return "前道工序未完成";
|
|
|
+ return "该工件" + parseLastOprnoFromMsg(message) + "未加工";
|
|
|
case "NE":
|
|
|
return "工件不存在";
|
|
|
case "LK":
|
|
|
@@ -123,7 +123,7 @@ public class CheckQualityStep extends AbstractStep {
|
|
|
case "NN":
|
|
|
return "该工件跳过该工位";
|
|
|
case "QN":
|
|
|
- return "前道工序加工NG";
|
|
|
+ return "该工件" + parseLastOprnoFromMsg(message) + "加工NG";
|
|
|
case "NF":
|
|
|
return "该工件已合格下线";
|
|
|
case "NR":
|
|
|
@@ -187,4 +187,34 @@ public class CheckQualityStep extends AbstractStep {
|
|
|
context.updateUI();
|
|
|
onSuccess(context);
|
|
|
}
|
|
|
+
|
|
|
+ // ========== v3 协议:INSPXXX / OPXXX0 前道工位号解析 ==========
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从 AQDW 响应原文中解析 lx(前道工位号紧凑格式),并转成可读工位号。
|
|
|
+ * AQDW v3(99 字节)中 lx 位于 substring(72,75),占 3 字符(含空格 trim)。
|
|
|
+ */
|
|
|
+ private static String parseLastOprnoFromMsg(String message) {
|
|
|
+ if (message == null || message.length() < 75) return "OP";
|
|
|
+ return getOprnoName(message.substring(72, 75).trim());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 紧凑 lx → 可读工位号
|
|
|
+ * "13" → "OP130"
|
|
|
+ * "I3" → "INSP030"(Integer("3") * 10 = 30)
|
|
|
+ * "I10" → "INSP100"
|
|
|
+ */
|
|
|
+ private static String getOprnoName(String lx) {
|
|
|
+ if (lx == null || lx.isEmpty()) return "OP";
|
|
|
+ if (lx.startsWith("I")) {
|
|
|
+ try {
|
|
|
+ int num = Integer.parseInt(lx.substring(1)) * 10;
|
|
|
+ return String.format("INSP%03d", num);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return "INSP" + lx.substring(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "OP" + lx + "0";
|
|
|
+ }
|
|
|
}
|