wangxichen 1 周之前
父节点
当前提交
bca582169f

+ 17 - 1
src/main/java/com/jeesite/modules/mes/util/CommonUitl.java

@@ -315,7 +315,14 @@ public class CommonUitl {
      * @return
      */
     public static Boolean checkProductSnHmb(String sn){
-        // 0050010400435E6348245C120001
+        if(sn == null){
+            return false;
+        }
+        // 新规则 24 位(EVE 编码):F956210325195AI24A010001
+        if(sn.length() == 24){
+            return checkProductSnHmbEve(sn);
+        }
+        // 老规则 28 位:0050010400435E6348245C120001
         if(sn.length() != 28){
             return false;
         }
@@ -336,6 +343,15 @@ public class CommonUitl {
         return true;
     }
 
+    // 后梁码 EVE 编码规则(24位):
+    // 供应商5位(F9562) + 物料代码8位(数字) + 日期4位(年A-Z、月A-L、日01-31) + 批次3位(产线字母+2位数字) + 流水4位(数字)
+    private static final java.util.regex.Pattern HMB_EVE_PATTERN =
+            java.util.regex.Pattern.compile("^F9562\\d{8}[A-Z][A-L](0[1-9]|[12]\\d|3[01])[A-Z]\\d{2}\\d{4}$");
+
+    public static Boolean checkProductSnHmbEve(String sn){
+        return sn != null && HMB_EVE_PATTERN.matcher(sn).matches();
+    }
+
     /**
      * 检验前工序工件码的正确性
      * @param sn 工件码

+ 6 - 8
src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java

@@ -3129,15 +3129,13 @@ public class MesProductRecordController extends BaseController {
 				// 检验工件码
 				String checkProductSn = Global.getConfig("mes.check.productSn");
 				if(checkProductSn.equals("1")){
-//					if(!CommonUitl.checkProductSnHmb(wsn)){
-//						return renderResult(Global.FALSE, text("后面板码式不正确"));
-//					}
-
-					MesProductModel mesProductModel = mesProductModelService.checkSnObj(wsn);
-					if(mesProductModel == null){
-						return renderResult(Global.FALSE, text("工件码格式错误!"));
+					// 兼容:后梁码规则校验通过(新24位/老28位)或产品型号配置匹配,任一满足即可
+					if(!CommonUitl.checkProductSnHmb(wsn)){
+						MesProductModel mesProductModel = mesProductModelService.checkSnObj(wsn);
+						if(mesProductModel == null){
+							return renderResult(Global.FALSE, text("工件码格式错误!"));
+						}
 					}
-
 				}
 
 				// 检查前工件码是否已绑定后面板码