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-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSignUsageSupportProbe.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSignUsageSupportProbe.java b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSignUsageSupportProbe.java
new file mode 100644
index 0000000..8eebdd4
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/support/LimsSignUsageSupportProbe.java
@@ -0,0 +1,101 @@
+package jnpf.limsService.support;
+
+import jnpf.limsEntity.LimsSignUsageTarget;
+import jnpf.limsEntity.SignOpType;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/** SIGN_USED 鐨勫箓绛夈�佸垎缁勪笌鎵归噺閮ㄥ垎鎴愬姛绾� JVM 鎺㈤拡銆� */
+public final class LimsSignUsageSupportProbe {
+
+ private static int passed;
+ private static int failed;
+
+ public static void main(String[] args) {
+ LimsSignUsageTarget a = target("A", "LS-001");
+ LimsSignUsageTarget b = target("B", "LS-001");
+ LimsSignUsageTarget c = target("C", "LS-002");
+
+ LimsSignUsageSupport.UsageGroup ordered =
+ LimsSignUsageSupport.groupByBizCode(Arrays.asList(a, b)).get(0);
+ LimsSignUsageSupport.UsageGroup reordered =
+ LimsSignUsageSupport.groupByBizCode(Arrays.asList(b, a, a)).get(0);
+ String key1 = LimsSignUsageSupport.clientEventId(
+ "sign-1", SignOpType.JIANCE_AUDIT_PASS, ordered);
+ String key2 = LimsSignUsageSupport.clientEventId(
+ "sign-1", SignOpType.JIANCE_AUDIT_PASS, reordered);
+ check("鐩爣椤哄簭鍜岄噸澶嶉」涓嶆敼鍙樺箓绛夐敭", key1.equals(key2), key1 + " vs " + key2);
+ check("骞傜瓑閿暱搴﹀浐瀹氫负 67", key1.length() == 67, key1);
+
+ String changed = LimsSignUsageSupport.clientEventId(
+ "sign-1", SignOpType.JIANCE_AUDIT_PASS,
+ LimsSignUsageSupport.groupByBizCode(Collections.singletonList(a)).get(0));
+ check("瀹為檯鐩爣鍙樺寲鏃跺箓绛夐敭鍙樺寲", !key1.equals(changed), changed);
+ check("涓氬姟妯″潡杩涘叆浜嬩欢鍒嗙粍", "LIMS-妫�娴嬩换鍔�".equals(ordered.getBizModule()),
+ ordered.getBizModule());
+
+ LimsSignUsageTarget otherModule = target("A", "LS-001");
+ otherModule.setBizModule("LIMS-鍏朵粬妯″潡");
+ String changedModule = LimsSignUsageSupport.clientEventId(
+ "sign-1", SignOpType.JIANCE_AUDIT_PASS,
+ LimsSignUsageSupport.groupByBizCode(Collections.singletonList(otherModule)).get(0));
+ check("涓氬姟妯″潡鍙樺寲鏃跺箓绛夐敭鍙樺寲", !key1.equals(changedModule), changedModule);
+
+ Map<String, Object> partial = LimsSignUsageSupport.signExtra(
+ Arrays.asList("A", "B"), Collections.singletonList(a));
+ List<?> requested = (List<?>) partial.get("requestedTargets");
+ List<?> affected = (List<?>) partial.get("affectedTargets");
+ check("璇锋眰鎽樿淇濈暀 A/B", requested.size() == 2, String.valueOf(requested));
+ check("閮ㄥ垎鎴愬姛鍙瀹為檯 A", affected.size() == 1
+ && String.valueOf(affected.get(0)).contains("targetId=A")
+ && !String.valueOf(affected.get(0)).contains("targetId=B"), String.valueOf(affected));
+ check("affected 涓庡疄闄呯洰鏍囨暟涓�鑷�", Integer.valueOf(1).equals(partial.get("affected")),
+ String.valueOf(partial));
+ check("瀹為檯缁撴灉鎽樿鎼哄甫涓氬姟妯″潡", String.valueOf(affected.get(0))
+ .contains("bizModule=LIMS-妫�娴嬩换鍔�"), String.valueOf(affected));
+
+ Map<String, Object> canonical1 = LimsSignUsageSupport.signExtra(
+ Arrays.asList("B", "A", "A"), Arrays.asList(b, a, a));
+ Map<String, Object> canonical2 = LimsSignUsageSupport.signExtra(
+ Arrays.asList("A", "B"), Arrays.asList(a, b));
+ check("绛惧悕浣跨敤鎽樿涓嶅彈鐩爣椤哄簭鍜岄噸澶嶉」褰卞搷",
+ canonical1.equals(canonical2), canonical1 + " vs " + canonical2);
+
+ List<LimsSignUsageSupport.UsageGroup> groups =
+ LimsSignUsageSupport.groupByBizCode(Arrays.asList(a, b, c));
+ check("璺ㄤ袱涓� bizCode 鐢熸垚涓や釜浜嬩欢缁�", groups.size() == 2, String.valueOf(groups.size()));
+ check("鍚� bizCode 鐨勪袱涓洰鏍囧湪鍚屼竴缁�", groups.get(0).getTargets().size() == 2,
+ String.valueOf(groups.get(0).getTargets().size()));
+ check("affected=0 涓嶄骇鐢熶簨浠剁粍",
+ LimsSignUsageSupport.groupByBizCode(Collections.emptyList()).isEmpty(), "浠嶆湁鍒嗙粍");
+
+ System.out.println("=== SIGN_USED 鏂█锛�" + passed + " 閫氳繃 / " + failed + " 澶辫触 ===");
+ System.exit(failed == 0 ? 0 : 1);
+ }
+
+ private static LimsSignUsageTarget target(String id, String bizCode) {
+ return LimsSignUsageTarget.builder()
+ .targetTable("lims_jianyan_xiang")
+ .targetId(id)
+ .bizType("JIANCE_TASK")
+ .bizModule("LIMS-妫�娴嬩换鍔�")
+ .bizCode(bizCode)
+ .build();
+ }
+
+ 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 LimsSignUsageSupportProbe() {
+ }
+}
--
Gitblit v1.8.0