From 6a40531396583fac35bd06e5e1b92433e5a56acf Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 12 五月 2026 15:01:03 +0800
Subject: [PATCH] #

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CusBarcodeSyncMatnrService.java |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CusBarcodeSyncMatnrService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CusBarcodeSyncMatnrService.java
index c7d512d..51a3c03 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CusBarcodeSyncMatnrService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CusBarcodeSyncMatnrService.java
@@ -159,8 +159,9 @@
                 continue;
             }
             boolean viewHit = viewItems != null && CusBarcodeSyncViewQueryService.orderMatnrHitsBarcodeView(code, viewItems);
-            log.info("[cus_barcode_sync] 鏈湴鏃犺褰� code={} viewHit={} viewRowCount={}", code, viewHit,
-                    viewItems == null ? 0 : viewItems.size());
+            int viewRowCount = viewItems == null ? 0 : viewItems.size();
+            log.info("[cus_barcode_sync] 鏈湴鏃犺褰� code={} viewHit={} viewRowCount={}", code, viewHit, viewRowCount);
+            Exception applyEx = null;
             if (viewHit && viewItems != null) {
                 List<Map<String, Object>> rowsForCode = viewItems.stream()
                         .filter(r -> CusBarcodeSyncViewQueryService.rowMatchesOrderMatnr(code, Objects.toString(r.get("barcode"), null)))
@@ -170,19 +171,51 @@
                         log.info("[cus_barcode_sync] 鎸夋潯鐮佽ˉ妗� apply rows={} code={}", rowsForCode.size(), code);
                         cusBarcodeSyncMatnrApplyService.applyFromViewRows(rowsForCode, orderItemByCode, loginUserId);
                     } catch (Exception ex) {
+                        applyEx = ex;
                         log.warn("[cus_barcode_sync] 鎸夎鍥捐ˉ鍏ㄧ墿鏂欏け璐� code={}", code, ex);
                     }
                     m = findLocalMatnrForOrderCode(code);
                 }
             }
             if (m == null) {
-                log.warn("[cus_barcode_sync] 浠嶆棤娉曡惤鍦� man_matnr code={} viewHit={} viewSample=[{}]",
-                        code, viewHit, summarizeViewBarcodes(viewItems));
-                throw new CoolException("鐗╂枡涓嶅瓨鍦細" + code);
+                ManMatnrFailReason fr = resolveManMatnrFailReason(viewItems, viewHit, applyEx);
+                log.warn("[cus_barcode_sync] 鏃犳硶钀藉湴 man_matnr code={} reason={} viewRowCount={} viewBarcodes=[{}]",
+                        code, fr.name(), viewRowCount, summarizeViewBarcodes(viewItems));
+                throw new CoolException("鐗╂枡涓嶅瓨鍦細" + code + "锛�" + fr.userMessage);
             }
         }
     }
 
+    private enum ManMatnrFailReason {
+        VIEW_QUERY_ERROR("鍓簱瑙嗗浘鏌ヨ寮傚父锛屾湭鎷垮埌缁撴灉闆�"),
+        VIEW_ZERO_ROWS("鍓簱瑙嗗浘鏈鏌ヨ 0 琛岋紝璇锋牳瀵� dj-cloud-wms 涓庤鍥炬暟鎹�"),
+        VIEW_CODE_NOT_IN_RESULT("鍓簱瑙嗗浘鏈夎繑鍥炶浣嗘棤涓庢湰鍗� matnr 鐩哥瓑鐨� barcode"),
+        APPLY_ERROR("瑙嗗浘宸插懡涓絾鍐欏叆 man_matnr 澶辫触"),
+        APPLY_STILL_EMPTY("瑙嗗浘宸插懡涓笖宸� apply 浠嶆棤涓诲簱鐗╂枡璁板綍");
+
+        final String userMessage;
+
+        ManMatnrFailReason(String userMessage) {
+            this.userMessage = userMessage;
+        }
+    }
+
+    private static ManMatnrFailReason resolveManMatnrFailReason(List<Map<String, Object>> viewItems, boolean viewHit, Exception applyEx) {
+        if (viewItems == null) {
+            return ManMatnrFailReason.VIEW_QUERY_ERROR;
+        }
+        if (viewItems.isEmpty()) {
+            return ManMatnrFailReason.VIEW_ZERO_ROWS;
+        }
+        if (!viewHit) {
+            return ManMatnrFailReason.VIEW_CODE_NOT_IN_RESULT;
+        }
+        if (applyEx != null) {
+            return ManMatnrFailReason.APPLY_ERROR;
+        }
+        return ManMatnrFailReason.APPLY_STILL_EMPTY;
+    }
+
     private static String joinCodesForLog(List<String> matnrCodes) {
         if (matnrCodes == null || matnrCodes.isEmpty()) {
             return "";

--
Gitblit v1.9.1