diff --git a/lab-service-api/lab-system-api/lab-system-api.iml b/lab-service-api/lab-system-api/lab-system-api.iml index 44b9c88..1bbc181 100644 --- a/lab-service-api/lab-system-api/lab-system-api.iml +++ b/lab-service-api/lab-system-api/lab-system-api.iml @@ -1,14 +1,14 @@ - - - + + + diff --git a/lab-service/lab-lims/pom.xml b/lab-service/lab-lims/pom.xml index 9985e0f..5710fc9 100644 --- a/lab-service/lab-lims/pom.xml +++ b/lab-service/lab-lims/pom.xml @@ -22,7 +22,11 @@ - + + com.alibaba + QLExpress + 3.2.0 + e-iceblue diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/DetermineFormulaController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/DetermineFormulaController.java index 781700a..944c562 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/DetermineFormulaController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/DetermineFormulaController.java @@ -18,14 +18,16 @@ import org.springblade.lims.entry.DetermineFormula; import org.springblade.lims.entry.ExamineItem; import org.springblade.lims.service.IDetermineFormulaService; import org.springblade.lims.service.IExamineItemService; +import org.springblade.lims.utils.FormulaTool; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.List; /** * - * + * 试剂公式管理 * @author swj * @since 2022年6月5日16:07:32 */ @@ -84,4 +86,21 @@ public class DetermineFormulaController extends BladeController { public R deleteByIds(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); } + + /** + * 根据公式的字符串识别公式中参数 + * @param formulaStr 数学公式的字符串,如 (x-v1)/(v2-v1) + * @return 参数的string类型的列表 + */ + @GetMapping("getParams") + @ApiOperation(value="根据公式的字符串识别公式中参数", notes="传入string") + public R getParams(@ApiParam(value = "公式string", required = true) @RequestParam String formulaStr){ + try{ + List strings = FormulaTool.paraList(formulaStr); + return R.data(strings); + }catch (Exception e){ + return R.fail(e.getMessage()); + } + + } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/utils/FormulaTool.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/utils/FormulaTool.java new file mode 100644 index 0000000..df52bb4 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/utils/FormulaTool.java @@ -0,0 +1,42 @@ +package org.springblade.lims.utils; + +import com.ql.util.express.DefaultContext; +import com.ql.util.express.ExpressRunner; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 数学公式相关方法 + * @author ytl + * @since 2022-09-14 17:01 + */ +public class FormulaTool { + private static ExpressRunner runner; + + static{ + runner = new ExpressRunner(true,false); + } + + //返回公式中参数的列表 + public static List paraList(String regx) throws Exception{ + String[] paras = runner.getOutVarNames(regx); + List strings = Arrays.asList(paras); + return strings; + } + + //返回公式的计算结果 + public static String getResult(String regx, Map params) throws Exception{ + DefaultContext context = new DefaultContext<>(); + //给参数赋值 + params.forEach((k,v)->{ + context.put(k,Double.valueOf(v.toString())); + }); + + //计算 + Object result = runner.execute(regx, context, null, true, false); + + return result.toString(); + } +}