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/impl/LimsJianceTaskBatchValidationProbe.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsJianceTaskBatchValidationProbe.java b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsJianceTaskBatchValidationProbe.java
new file mode 100644
index 0000000..cfe3115
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsJianceTaskBatchValidationProbe.java
@@ -0,0 +1,98 @@
+package jnpf.limsService.impl;
+
+import jnpf.exception.DataException;
+import jnpf.limsEntity.LimsFenjianItem;
+import jnpf.limsEntity.LimsJianyanAssignItem;
+import jnpf.limsEntity.LimsJianyanXiangEntity;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/** 鎵归噺浠诲姟蹇呴』鍦ㄧ涓�鏉� UPDATE 鍓嶅畬鎴愭暣鎵瑰繀濉牎楠屻�� */
+public final class LimsJianceTaskBatchValidationProbe {
+
+    private static int passed;
+    private static int failed;
+
+    public static void main(String[] args) {
+        LimsFenjianItem first = fenjian("A", true);
+        LimsFenjianItem invalidSecond = fenjian("B", false);
+        check("鍒嗘鍚庤闈炴硶鍦ㄥ啓寰幆鍓嶈鍙戠幇",
+                failsOnSecondFenjian(first, invalidSecond), "鏈寜绗簩琛屽け璐�");
+
+        Map<String, LimsJianyanXiangEntity> rows = new LinkedHashMap<>();
+        rows.put("A", normalRow("A"));
+        rows.put("B", normalRow("B"));
+        LimsJianyanAssignItem validAssign = new LimsJianyanAssignItem();
+        validAssign.setId("A");
+        validAssign.setJianchaRen("user-a");
+        LimsJianyanAssignItem invalidAssign = new LimsJianyanAssignItem();
+        invalidAssign.setId("B");
+        check("鍒嗛厤鍚庤闈炴硶鍦ㄥ啓寰幆鍓嶈鍙戠幇",
+                failsOnSecondAssign(validAssign, invalidAssign, rows), "鏈寜绗簩琛屽け璐�");
+
+        LimsJianyanAssignItem missingRow = new LimsJianyanAssignItem();
+        missingRow.setId("missing");
+        boolean skipped = true;
+        try {
+            LimsJianceTaskServiceImpl.validateAssignItems(
+                    Arrays.asList(validAssign, missingRow), rows);
+        } catch (DataException e) {
+            skipped = false;
+        }
+        check("棰勫姞杞界己澶辫淇濇寔閮ㄥ垎鎴愬姛璺宠繃璇箟", skipped, "缂哄け琛岃褰撴垚鏍¢獙澶辫触");
+
+        System.out.println("=== 鎵归噺棰勬牎楠屾柇瑷�锛�" + passed + " 閫氳繃 / " + failed + " 澶辫触 ===");
+        System.exit(failed == 0 ? 0 : 1);
+    }
+
+    private static boolean failsOnSecondFenjian(LimsFenjianItem first, LimsFenjianItem second) {
+        try {
+            LimsJianceTaskServiceImpl.validateFenjianItems(Arrays.asList(first, second));
+            return false;
+        } catch (DataException e) {
+            return e.getMessage() != null && e.getMessage().contains("绗� 2 鏉�");
+        }
+    }
+
+    private static boolean failsOnSecondAssign(LimsJianyanAssignItem first,
+                                                LimsJianyanAssignItem second,
+                                                Map<String, LimsJianyanXiangEntity> rows) {
+        try {
+            LimsJianceTaskServiceImpl.validateAssignItems(Arrays.asList(first, second), rows);
+            return false;
+        } catch (DataException e) {
+            return e.getMessage() != null && e.getMessage().contains("绗� 2 鏉�");
+        }
+    }
+
+    private static LimsFenjianItem fenjian(String id, boolean complete) {
+        LimsFenjianItem item = new LimsFenjianItem();
+        item.setId(id);
+        item.setFenjianLiang("1");
+        item.setFenjianDanwei(complete ? "g" : null);
+        item.setFenjianFenzhuangRongqi("鐡�");
+        item.setFenjianBaocunTiaojian("甯告俯");
+        return item;
+    }
+
+    private static LimsJianyanXiangEntity normalRow(String id) {
+        LimsJianyanXiangEntity row = new LimsJianyanXiangEntity();
+        row.setId(id);
+        return row;
+    }
+
+    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 LimsJianceTaskBatchValidationProbe() {
+    }
+}

--
Gitblit v1.8.0