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 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 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() { } }