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