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/LimsQingyandanFieldValueResolverProbe.java | 138 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 138 insertions(+), 0 deletions(-)
diff --git a/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/LimsQingyandanFieldValueResolverProbe.java b/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/LimsQingyandanFieldValueResolverProbe.java
new file mode 100644
index 0000000..882ec4e
--- /dev/null
+++ b/jnpf-biz-common/jnpf-biz-common-audit/src/test/java/jnpf/bizcommon/audit/service/value/LimsQingyandanFieldValueResolverProbe.java
@@ -0,0 +1,138 @@
+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;
+
+/** 璇烽獙鍗曞洓绫诲紩鐢ㄧ殑鎵归噺鏀堕泦銆佸睍绀哄拰鎶�鏈瓧娈垫爣璁版帰閽堛�� */
+public final class LimsQingyandanFieldValueResolverProbe {
+
+ private static int passed;
+ private static int failed;
+
+ public static void main(String[] args) {
+ CountingLookup lookup = new CountingLookup();
+ LimsQingyandanFieldValueResolver resolver = new LimsQingyandanFieldValueResolver(lookup);
+ List<AuditFieldDiffViewVO> fields = Arrays.asList(
+ field("jiance_xiangmu", "", "[\"p1\",\"p2\"]"),
+ field("jianyan_biaozhun", "", "s1"),
+ field("qingyan_ren", "", "u1"),
+ field("chanpin_id", "", "c1"),
+ field("biz_status", "", "created"),
+ field("biz_type", "", "CP"),
+ field("jiance_fangshi", "", "quanjian"));
+ fields.get(0).setValueType("multiEnum");
+ fields.get(1).setComponentType("relationForm");
+
+ resolver.resolve(new AuditFieldValueContext("lims_qingyandan", "tenant-a", null), fields);
+
+ check("妫�娴嬮」鐩暣鎵规煡璇竴娆�", lookup.projectCalls == 1, String.valueOf(lookup.projectCalls));
+ check("妫�楠屾爣鍑嗘暣鎵规煡璇竴娆�", lookup.standardCalls == 1, String.valueOf(lookup.standardCalls));
+ check("浜哄憳鏁存壒鏌ヨ涓�娆�", lookup.userCalls == 1, String.valueOf(lookup.userCalls));
+ check("浜у搧鏁存壒鏌ヨ涓�娆�", lookup.productCalls == 1, String.valueOf(lookup.productCalls));
+ check("绉熸埛杈圭晫閫忎紶鍒板叏閮ㄦ壒閲忔煡璇�", lookup.tenantCalls == 4, String.valueOf(lookup.tenantCalls));
+ check("椤圭洰鍚嶇О淇濇寔璇锋眰椤哄簭涓斿崟椤瑰け璐ュ畨鍏ㄥ洖钀�",
+ "鍚噺娴嬪畾A銆佸悕绉版殏涓嶅彲鐢�".equals(fields.get(0).getNewDisplay()),
+ fields.get(0).getNewDisplay());
+ check("鏍囧噯鏄剧ず缂栧彿鍜屽悕绉�", "GB2 路 闃胯帿瑗挎灄鑳跺泭".equals(fields.get(1).getNewDisplay()),
+ fields.get(1).getNewDisplay());
+ check("浜哄憳鏄剧ず浜嬩欢鐩綍鍚嶇О", "绠$悊鍛�".equals(fields.get(2).getNewDisplay()),
+ fields.get(2).getNewDisplay());
+ check("浜у搧 ID 瑙f瀽鍚庝粛鏍囪 technical", Boolean.TRUE.equals(fields.get(3).getTechnical())
+ && "闃胯帿瑗挎灄鑳跺泭锛圓1锛�".equals(fields.get(3).getNewDisplay()),
+ String.valueOf(fields.get(3).getTechnical()));
+ check("浜嬩欢鍊肩被鍨嬩紭鍏堜簬鏄惧紡瑙f瀽鍣�", "multiEnum".equals(fields.get(0).getValueType()),
+ fields.get(0).getValueType());
+ check("浜嬩欢鎺т欢绫诲瀷浼樺厛浜庢樉寮忚В鏋愬櫒", "relationForm".equals(fields.get(1).getComponentType()),
+ fields.get(1).getComponentType());
+ check("鏄惧紡涓氬姟瑙f瀽鍣ㄨВ鏋� created/CP/quanjian",
+ "宸插垱寤�".equals(fields.get(4).getNewDisplay())
+ && "鎴愬搧".equals(fields.get(5).getNewDisplay())
+ && "鍏ㄦ".equals(fields.get(6).getNewDisplay())
+ && "enum".equals(fields.get(4).getValueType())
+ && "enum".equals(fields.get(5).getValueType())
+ && "enum".equals(fields.get(6).getValueType()),
+ fields.get(4).getNewDisplay() + "/" + fields.get(5).getNewDisplay()
+ + "/" + fields.get(6).getNewDisplay());
+
+ resolver.resolve(new AuditFieldValueContext("lims_qingyandan", "", null),
+ Collections.singletonList(field("qingyan_ren", "", "other-user")));
+ check("绌虹鎴峰紩鐢ㄨВ鏋� fail-closed", lookup.userCalls == 1,
+ String.valueOf(lookup.userCalls));
+
+ System.out.println("=== 璇烽獙鍗曟壒閲忓紩鐢ㄦ柇瑷�锛�" + 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.setOldData(oldData);
+ field.setNewData(newData);
+ return field;
+ }
+
+ private static final class CountingLookup implements LimsQingyandanFieldValueResolver.ReferenceLookup {
+ private int projectCalls;
+ private int standardCalls;
+ private int userCalls;
+ private int productCalls;
+ private int tenantCalls;
+
+ @Override
+ public Map<String, String> projects(String tenantId, Set<String> ids) {
+ projectCalls++;
+ tenant(tenantId);
+ check("妫�娴嬮」鐩� ID 涓�娆″畬鏁存敹闆�", ids.size() == 2 && ids.contains("p1") && ids.contains("p2"),
+ ids.toString());
+ return Collections.singletonMap("p1", "鍚噺娴嬪畾A");
+ }
+
+ @Override
+ public Map<String, String> standards(String tenantId, Set<String> ids) {
+ standardCalls++;
+ tenant(tenantId);
+ return Collections.singletonMap("s1", "GB2 路 闃胯帿瑗挎灄鑳跺泭");
+ }
+
+ @Override
+ public Map<String, String> users(String tenantId, Set<String> ids) {
+ userCalls++;
+ tenant(tenantId);
+ return Collections.singletonMap("u1", "绠$悊鍛�");
+ }
+
+ @Override
+ public Map<String, String> products(String tenantId, Set<String> ids) {
+ productCalls++;
+ tenant(tenantId);
+ Map<String, String> result = new LinkedHashMap<>();
+ result.put("c1", "闃胯帿瑗挎灄鑳跺泭锛圓1锛�");
+ return result;
+ }
+
+ private void tenant(String tenantId) {
+ if ("tenant-a".equals(tenantId)) {
+ tenantCalls++;
+ }
+ }
+ }
+
+ 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 LimsQingyandanFieldValueResolverProbe() {
+ }
+}
--
Gitblit v1.8.0