1、公式管理类DetermineFormulaController新增getParams()用来识别字符串公式中的参数列表

dev
yitonglei 3 years ago
parent 1e0d464534
commit 8edffdb2dc
  1. 6
      lab-service-api/lab-system-api/lab-system-api.iml
  2. 6
      lab-service/lab-lims/pom.xml
  3. 21
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/DetermineFormulaController.java
  4. 42
      lab-service/lab-lims/src/main/java/org/springblade/lims/utils/FormulaTool.java

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager"> <component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web"> <facet type="web" name="Web">
<configuration> <configuration>
<webroots /> <webroots />
</configuration> </configuration>
</facet> </facet>
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" /> <output url="file://$MODULE_DIR$/target/classes" />

@ -22,7 +22,11 @@
</repositories> </repositories>
<dependencies> <dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>QLExpress</artifactId>
<version>3.2.0</version>
</dependency>
<!--word页码--> <!--word页码-->
<dependency> <dependency>
<groupId>e-iceblue</groupId> <groupId>e-iceblue</groupId>

@ -18,14 +18,16 @@ import org.springblade.lims.entry.DetermineFormula;
import org.springblade.lims.entry.ExamineItem; import org.springblade.lims.entry.ExamineItem;
import org.springblade.lims.service.IDetermineFormulaService; import org.springblade.lims.service.IDetermineFormulaService;
import org.springblade.lims.service.IExamineItemService; import org.springblade.lims.service.IExamineItemService;
import org.springblade.lims.utils.FormulaTool;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
* * 试剂公式管理
* @author swj * @author swj
* @since 2022年6月5日16:07:32 * @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) { public R deleteByIds(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(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<String> strings = FormulaTool.paraList(formulaStr);
return R.data(strings);
}catch (Exception e){
return R.fail(e.getMessage());
}
}
} }

@ -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<String> paraList(String regx) throws Exception{
String[] paras = runner.getOutVarNames(regx);
List<String> strings = Arrays.asList(paras);
return strings;
}
//返回公式的计算结果
public static String getResult(String regx, Map<String,Object> params) throws Exception{
DefaultContext<String, Object> 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();
}
}
Loading…
Cancel
Save