From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/JnpfDictionaryFieldValueResolverProbe.java |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/JnpfDictionaryFieldValueResolverProbe.java b/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/JnpfDictionaryFieldValueResolverProbe.java
new file mode 100644
index 0000000..d47e5a3
--- /dev/null
+++ b/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/JnpfDictionaryFieldValueResolverProbe.java
@@ -0,0 +1,94 @@
+package jnpf.bizcommon.audit.service.value;
+
+import jnpf.bizcommon.audit.entity.model.AuditFieldDiffViewVO;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** dictionaryType 鏃犲唴鑱� options 鏃剁殑鎵归噺瑙f瀽涓庣鎴疯竟鐣屾帰閽堛�� */
+public final class JnpfDictionaryFieldValueResolverProbe {
+
+    private static int passed;
+    private static int failed;
+
+    public static void main(String[] args) {
+        CountingLookup lookup = new CountingLookup();
+        JnpfDictionaryFieldValueResolver resolver = new JnpfDictionaryFieldValueResolver(lookup);
+        AuditFieldDiffViewVO status = field("biz_status", "", "created");
+        AuditFieldDiffViewVO method = field("jiance_fangshi", "", "quanjian");
+        AuditFieldDiffViewVO snapshot = field("snapshot", "", "created");
+        snapshot.setNewDisplay("浜嬩欢蹇収");
+        List<AuditFieldDiffViewVO> fields = Arrays.asList(status, method, snapshot);
+        Map<String, String> dictionaryTypes = new LinkedHashMap<>();
+        dictionaryTypes.put("biz_status", "bizStatus");
+        dictionaryTypes.put("jiance_fangshi", "jianceFangshi");
+        dictionaryTypes.put("snapshot", "bizStatus");
+
+        resolver.resolve(new AuditFieldValueContext(
+                "lims_qingyandan", "tenant-a", null, dictionaryTypes), fields);
+
+        check("澶氫釜 dictionaryType 鍚堝苟鎴愪竴娆℃壒閲忔煡璇�", lookup.calls == 1,
+                String.valueOf(lookup.calls));
+        check("瀛楀吀绫诲瀷鍜屽�兼暣鎵规敹闆�", lookup.typeCount == 2 && lookup.valueCount == 2,
+                lookup.typeCount + "/" + lookup.valueCount);
+        check("鏃犲唴鑱� options 鐨勫瓧鍏稿�艰В鏋愬睍绀�", "宸插垱寤�".equals(status.getNewDisplay())
+                && "鍏ㄦ".equals(method.getNewDisplay()),
+                status.getNewDisplay() + "/" + method.getNewDisplay());
+        check("浜嬩欢鍙戠敓鏃跺睍绀哄揩鐓т紭鍏�", "浜嬩欢蹇収".equals(snapshot.getNewDisplay()),
+                snapshot.getNewDisplay());
+
+        resolver.resolve(new AuditFieldValueContext(
+                        "lims_qingyandan", "", null, dictionaryTypes),
+                Collections.singletonList(field("biz_status", "", "created")));
+        check("绌虹鎴峰瓧鍏歌В鏋� fail-closed", lookup.calls == 1, String.valueOf(lookup.calls));
+
+        System.out.println("=== JNPF 瀛楀吀鎵归噺瑙f瀽鏂█锛�" + passed + " 閫氳繃 / " + failed + " 澶辫触 ===");
+        System.exit(failed == 0 ? 0 : 1);
+    }
+
+    private static AuditFieldDiffViewVO field(String name, String oldData, String newData) {
+        AuditFieldDiffViewVO field = new AuditFieldDiffViewVO();
+        field.setField(name);
+        field.setValueType("enum");
+        field.setComponentType("select");
+        field.setOldData(oldData);
+        field.setNewData(newData);
+        return field;
+    }
+
+    private static final class CountingLookup
+            implements JnpfDictionaryFieldValueResolver.DictionaryLookup {
+        private int calls;
+        private int typeCount;
+        private int valueCount;
+
+        @Override
+        public Map<String, Map<String, String>> labels(
+                String tenantId, Set<String> dictionaryTypes, Set<String> values) {
+            calls++;
+            typeCount = dictionaryTypes.size();
+            valueCount = values.size();
+            Map<String, Map<String, String>> result = new LinkedHashMap<>();
+            result.put("bizStatus", Collections.singletonMap("created", "宸插垱寤�"));
+            result.put("jianceFangshi", Collections.singletonMap("quanjian", "鍏ㄦ"));
+            return result;
+        }
+    }
+
+    private static void check(String name, boolean ok, String detail) {
+        if (ok) {
+            passed++;
+            System.out.println("  [PASS] " + name);
+        } else {
+            failed++;
+            System.out.println("  [FAIL] " + name + " -- " + detail);
+        }
+    }
+
+    private JnpfDictionaryFieldValueResolverProbe() {
+    }
+}

--
Gitblit v1.8.0