diff --git a/lab-service/lab-lims/pom.xml b/lab-service/lab-lims/pom.xml
index c34a01e..a382e75 100644
--- a/lab-service/lab-lims/pom.xml
+++ b/lab-service/lab-lims/pom.xml
@@ -271,6 +271,11 @@
org.apache.maven.plugins
maven-antrun-plugin
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.2
+
diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ReagentFormulaController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ReagentFormulaController.java
index 4c5e2f8..0efe4d7 100644
--- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ReagentFormulaController.java
+++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ReagentFormulaController.java
@@ -15,10 +15,12 @@ import org.springblade.lims.entry.ExamineItem;
import org.springblade.lims.entry.Reagent;
import org.springblade.lims.entry.ReagentFormula;
import org.springblade.lims.entry.TemplateField;
+import org.springblade.lims.entry.OriginalRecordTemplate;
import org.springblade.lims.service.IExamineItemService;
import org.springblade.lims.service.IReagentFormulaService;
import org.springblade.lims.service.IReagentService;
import org.springblade.lims.service.ITemplateFieldService;
+import org.springblade.lims.service.IOriginalRecordTemplateService;
import org.springblade.lims.utils.FormulaValidationTool;
import org.springframework.web.bind.annotation.*;
@@ -45,6 +47,7 @@ public class ReagentFormulaController extends BladeController {
private final IReagentService reagentService;
private final IExamineItemService examineItemService;
private final ITemplateFieldService templateFieldService;
+ private final IOriginalRecordTemplateService originalRecordTemplateService;
/**
* 分页查询
@@ -130,22 +133,35 @@ public class ReagentFormulaController extends BladeController {
*/
@GetMapping("/variables")
@ApiOperation(value = "获取可用变量", notes = "根据试剂ID获取公式可用变量")
- public R> getVariables(@ApiParam(value = "试剂ID") @RequestParam Long reagentId) {
+ public R>> getVariables(@ApiParam(value = "试剂ID") @RequestParam Long reagentId) {
+ if (reagentId == null) {
+ return R.data(new ArrayList<>());
+ }
+
// 1. 查找所有使用该试剂的检验项(reagentId 为逗号分隔字符串,使用 LIKE 匹配)
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.like(ExamineItem::getReagentId, reagentId.toString());
List items = examineItemService.list(wrapper);
- // 2. 从有模板的检验项中收集模板字段名
- Set variables = new LinkedHashSet<>();
+ // 2. 从有模板的检验项中收集模板字段(返回 name/type/description 对象格式)
+ Map> variableMap = new LinkedHashMap<>();
boolean hasTemplateFields = false;
for (ExamineItem item : items) {
- if (item.getTemplateId() != null) {
- List fields = templateFieldService.getFieldsByTemplateId(item.getTemplateId());
+ List templates = originalRecordTemplateService.getByExamineItemId(item.getId());
+ if (templates != null && !templates.isEmpty()) {
+ OriginalRecordTemplate template = templates.get(0);
+ List fields = templateFieldService.getFieldsByTemplateIdAndType(template.getId(), "number");
if (fields != null && !fields.isEmpty()) {
hasTemplateFields = true;
for (TemplateField field : fields) {
- variables.add(field.getFieldName());
+ String name = field.getFieldName();
+ if (!variableMap.containsKey(name)) {
+ Map v = new HashMap<>(3);
+ v.put("name", name);
+ v.put("type", field.getFieldType() != null ? field.getFieldType() : "number");
+ v.put("description", name);
+ variableMap.put(name, v);
+ }
}
}
}
@@ -158,12 +174,15 @@ public class ReagentFormulaController extends BladeController {
String method = reagent.getResultDeterminationMethod();
List