Quellcode durchsuchen

算法调用演示

master
elinkthings vor 3 Jahren
Commit
27ff6d7ef3

+ 191
- 0
algorithm-lib/.idea/$CACHE_FILE$ Datei anzeigen

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State />
<State>
<id>Abstraction issuesJava</id>
</State>
<State>
<id>Android</id>
</State>
<State>
<id>Assignment issuesGroovy</id>
</State>
<State>
<id>Assignment issuesJava</id>
</State>
<State>
<id>Assignment issuesJavaScript and TypeScript</id>
</State>
<State>
<id>Async code and promisesJavaScript and TypeScript</id>
</State>
<State>
<id>CSS</id>
</State>
<State>
<id>Chrome OSCorrectnessLintAndroid</id>
</State>
<State>
<id>Class structureJava</id>
</State>
<State>
<id>Code style issuesJava</id>
</State>
<State>
<id>CodePlugin DevKit</id>
</State>
<State>
<id>CodeSpring CoreSpring</id>
</State>
<State>
<id>CoffeeScript</id>
</State>
<State>
<id>CommonReactive Streams</id>
</State>
<State>
<id>CorrectnessLintAndroid</id>
</State>
<State>
<id>Declaration redundancyJava</id>
</State>
<State>
<id>EmbeddedPerformanceJava</id>
</State>
<State>
<id>Error handlingJava</id>
</State>
<State>
<id>General</id>
</State>
<State>
<id>GeneralCoffeeScript</id>
</State>
<State>
<id>GeneralJava</id>
</State>
<State>
<id>GeneralJavaScript and TypeScript</id>
</State>
<State>
<id>Groovy</id>
</State>
<State>
<id>IconsUsabilityLintAndroid</id>
</State>
<State>
<id>InitializationJava</id>
</State>
<State>
<id>Java</id>
</State>
<State>
<id>Java 5Java language level migration aidsJava</id>
</State>
<State>
<id>Java 8Java language level migration aidsJava</id>
</State>
<State>
<id>Java language level migration aidsJava</id>
</State>
<State>
<id>JavaScript and TypeScript</id>
</State>
<State>
<id>JavadocJava</id>
</State>
<State>
<id>Kotlin</id>
</State>
<State>
<id>LintAndroid</id>
</State>
<State>
<id>MessagesCorrectnessLintAndroid</id>
</State>
<State>
<id>Naming conventionsJava</id>
</State>
<State>
<id>OSGi</id>
</State>
<State>
<id>PerformanceJava</id>
</State>
<State>
<id>PerformanceLintAndroid</id>
</State>
<State>
<id>Plugin DevKit</id>
</State>
<State>
<id>PortabilityJava</id>
</State>
<State>
<id>Potentially confusing code constructsGroovy</id>
</State>
<State>
<id>Potentially confusing code constructsJavaScript and TypeScript</id>
</State>
<State>
<id>Probable bugsCSS</id>
</State>
<State>
<id>Probable bugsKotlin</id>
</State>
<State>
<id>Reactive Streams</id>
</State>
<State>
<id>ReactorReactive Streams</id>
</State>
<State>
<id>SQL</id>
</State>
<State>
<id>SecurityJava</id>
</State>
<State>
<id>SecurityLintAndroid</id>
</State>
<State>
<id>Spring</id>
</State>
<State>
<id>Spring BootSpring</id>
</State>
<State>
<id>Spring CoreSpring</id>
</State>
<State>
<id>Spring DataSpring</id>
</State>
<State>
<id>TypeScriptJavaScript and TypeScript</id>
</State>
<State>
<id>UI form</id>
</State>
<State>
<id>UsabilityLintAndroid</id>
</State>
<State>
<id>WebSocket</id>
</State>
<State>
<id>toString() issuesJava</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>Android</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
</project>

+ 8
- 0
algorithm-lib/.idea/.gitignore Datei anzeigen

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

+ 13
- 0
algorithm-lib/.idea/compiler.xml Datei anzeigen

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="algorithm-lib" />
</profile>
</annotationProcessing>
</component>
</project>

+ 7
- 0
algorithm-lib/.idea/encodings.xml Datei anzeigen

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

+ 25
- 0
algorithm-lib/.idea/jarRepositories.xml Datei anzeigen

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="spring-snapshots" />
<option name="name" value="spring-snapshots" />
<option name="url" value="http://repo.spring.io/libs-snapshot" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

+ 10
- 0
algorithm-lib/.idea/libraries/libMacAlgorithm_aicare.xml Datei anzeigen

@@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="libMacAlgorithm-aicare">
<CLASSES />
<JAVADOC />
<NATIVE>
<root url="file://$PROJECT_DIR$/src/main/resources" />
</NATIVE>
<SOURCES />
</library>
</component>

+ 10
- 0
algorithm-lib/.idea/libraries/libMacAlgorithm_icomon.xml Datei anzeigen

@@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="libMacAlgorithm-icomon">
<CLASSES />
<JAVADOC />
<NATIVE>
<root url="file://$PROJECT_DIR$/src/main/resources" />
</NATIVE>
<SOURCES />
</library>
</component>

+ 14
- 0
algorithm-lib/.idea/misc.xml Datei anzeigen

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

+ 124
- 0
algorithm-lib/.idea/uiDesigner.xml Datei anzeigen

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

+ 2
- 0
algorithm-lib/algorithm-lib.iml Datei anzeigen

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />

+ 110
- 0
algorithm-lib/pom.xml Datei anzeigen

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.elink</groupId>
<artifactId>algorithm-lib</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>algorithm-lib</name>
<url>http://maven.apache.org</url>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
</properties>

<dependencies>
<dependency>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
<version>3.0.9</version>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.elink.aicare.AicareDemoAppApplication</mainClass>
<layout>JAR</layout>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
<!--打包时将resource下的文件一起打包-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>

<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/libs-snapshot</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/libs-snapshot</url>
</pluginRepository>
</pluginRepositories>
</project>

+ 13
- 0
algorithm-lib/src/main/java/com/elink/aicare/AicareDemoAppApplication.java Datei anzeigen

@@ -0,0 +1,13 @@
package com.elink.aicare;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class AicareDemoAppApplication {
public static void main(String args[]){
SpringApplication.run(com.elink.aicare.AicareDemoAppApplication.class, args);
}
}

+ 133
- 0
algorithm-lib/src/main/java/com/elink/aicare/BodyFatAlgorithmAicare.java Datei anzeigen

@@ -0,0 +1,133 @@
package com.elink.aicare;

/**
* 调用体脂算法动态库
*/
import com.sun.jna.Library;
import com.sun.jna.Native;

public interface BodyFatAlgorithmAicare extends Library {
String osName = System.getProperty("os.name"); // 获取当前操作系统的类型
String rootResource = BodyFatAlgorithmAicare.class.getResource("/").getPath();
String libWindows = "/libalgorithm-aicare.dll";
String libMacOS = rootResource+ "libMacAlgorithm-aicare.so";
//System调用so时,调用了:java.lang.System.mapLibraryName()方法。这个方法会在咱们的给定的名字前拼接上”lib”
//此种调用方式,linux系统对应的so库,需要放在usr/lib下
String liblinux = "algorithm-aicare";
//根据不同的操作系统,使用不同的库
String libPath = (osName != null && osName.startsWith("Windows")) ? libWindows : ((osName != null && osName.startsWith("Mac")) ? libMacOS : liblinux);
BodyFatAlgorithmAicare INSTANTCE = (BodyFatAlgorithmAicare) Native.synchronizedLibrary(
(BodyFatAlgorithmAicare) Native.loadLibrary(libPath, BodyFatAlgorithmAicare.class)
);

/**
* 身高单位换算 CM 换算为 M
* @param height 身高,单位:CM
* @return 身高,单位:M
*/
double getHeight(int height);

/**
* 计算用户BMI
* @param weight 用户体重,单位:kg
* @param height 用户身高,单位:M
* @return 用户的BMI
*/
double getBMI(double weight, double height);

/**
* 计算用户BM
* @param sex
* @param bmi
* @param height
* @param age
* @param adc
* @param weight
* @return
*/
double getBM(int sex, double bmi, double height, int age, int adc, double weight);

/**
* 计算用户ROM
* @param sex
* @param weight
* @param height
* @param age
* @param adc
* @return
*/
double getROM(int sex, double weight, double height, int age, int adc);

/**
* 计算用户VMC
* @param sex
* @param bmi
* @param adc
* @param age
* @return
*/
double getVWC(int sex, double bmi, int adc, int age);

/**
* 计算用户BFR
* @param sex
* @param bmi
* @param adc
* @param age
* @return
*/
double getBFR(int sex, double bmi, int adc, int age);

/**
* 计算用户SFR
* @param sex
* @param age
* @param bfr
* @return
*/
double getSFR(int sex, int age, double bfr);
double getROSM(int age, int sex, double moi, double bfr);

/**
* 计算用户PP
* @param bfr
* @param moi
* @param bm
* @param weight
* @param age
* @param sex
* @return
*/
double getPP(double bfr, double moi, double bm, double weight, int age, int sex);

/**
* 计算用户UVI
* @param sex
* @param weight
* @param height
* @param age
* @param adc
* @return
*/
int getUVI(int sex, double weight, double height, int age, int adc);

/**
* 计算用户BMR
* @param sex
* @param weight
* @param height
* @param age
* @param adc
* @return
*/
int getBMR(int sex, double weight, double height, int age, int adc);

/**
* 计算用户BodyAge
* @param age
* @param bmi
* @param sex
* @return
*/
int getBodyAge(int age, double bmi, int sex);
}

+ 81
- 0
algorithm-lib/src/main/java/com/elink/aicare/BodyFatAlgorithmUtils.java Datei anzeigen

@@ -0,0 +1,81 @@
package com.elink.aicare;

import com.alibaba.fastjson.JSON;

/**
*
*/
public class BodyFatAlgorithmUtils {

public static void main(String args[]){
int sex=1;
int age=24;
double weight = 60.5;
int height = 180;
int adc = 500;
System.out.println("品网算法");
System.out.println(JSON.toJSONString(getBodyFatData(0,sex,age,weight,height,adc)));
}

/**
* 获取基础身体指标
* @param algorithmType 身体指标算法类型,可取值:0或1,0:品网算法;1:沃莱算法;
* ps: 年龄、体重、身高、阻抗的取值范围仅当algorithmType=0时有效,超出取值范围,将返回空;
* @param sex 性别,可取值:1或2;1:男;2:女
* @param age 年龄,单位:年,取值范围:0<=age<=120
* @param weight 体重;单位:kg,取值范围:0.0< weight < 220
* @param height 身高;单位:cm,取值范围:0< height <=270
* @param adc 阻抗;取值范围:0 < adc <= 1000
* @return
*/
public static BodyFatData getBodyFatData(int algorithmType,int sex, int age, double weight,int height, int adc){

if (age < 0 || age > 120){
System.out.println("年龄age取值不正确,取值范围:0<=age<=120 ;单位:年");
return null;
}
if (weight <= 0.0 && weight > 220.0){
System.out.println("体重weight取值不正确,取值范围:0.0< weight < 220 ;单位:kg");
return null;
}
if (height <= 0 && height > 270){
System.out.println("身高height取值不正确,取值范围:0< height <=270 ;单位:cm");
return null;
}
if (adc < 0 && adc > 1000){
System.out.println("阻抗adc取值不正确,取值范围:0 < adc <= 1000");
return null;
}
return getDataByAicare(sex, age, weight,height, adc);

}

private static BodyFatData getDataByAicare(int sex, int age, double weight,int heightCM, int adc){
BodyFatAlgorithmAicare bodyFatAlgorithmAicare = BodyFatAlgorithmAicare.INSTANTCE;
double height = bodyFatAlgorithmAicare.getHeight(heightCM);
double bmi = bodyFatAlgorithmAicare.getBMI(weight,height);
double bm = bodyFatAlgorithmAicare.getBM(sex,bmi, height, age, adc, weight);
double rom = bodyFatAlgorithmAicare.getROM( sex, weight, height, age, adc);
double vwc = bodyFatAlgorithmAicare.getVWC( sex, bmi, adc, age);
double bfr = bodyFatAlgorithmAicare.getBFR( sex, bmi, adc, age);
double sfr = bodyFatAlgorithmAicare.getSFR( sex, age, bfr);
double rosm = bodyFatAlgorithmAicare.getROSM( age, sex, vwc, bfr);
double pp = bodyFatAlgorithmAicare.getPP( bfr, vwc, bm, weight, age, sex);
int uvi = bodyFatAlgorithmAicare.getUVI( sex, weight, height, age, adc);
int bmr = bodyFatAlgorithmAicare.getBMR( sex, weight, height, age, adc);
int bodyAge = bodyFatAlgorithmAicare.getBodyAge( age, bmi, sex);
//处理返回数据
BodyFatData fatData = new BodyFatData();
fatData.setBmi(bmi);
fatData.setBfr(Math.round(bfr * 10) / 10.0);
fatData.setSfr(Math.floor(sfr * 10) / 10);
fatData.setUvi(uvi);
fatData.setRom(Math.floor(rom * 10) / 10);
fatData.setBmr(bmr);
fatData.setBm(Math.floor(bm * 10) / 10);
fatData.setVwc(Math.floor(vwc * 10) / 10);
fatData.setBodyAge(bodyAge);
fatData.setPp(Math.floor(pp * 10) / 10);
return fatData;
}
}

+ 125
- 0
algorithm-lib/src/main/java/com/elink/aicare/BodyFatData.java Datei anzeigen

@@ -0,0 +1,125 @@
package com.elink.aicare;

public class BodyFatData {
/**
* 身体质量指数
*/
private double bmi;
/**
* 体脂率 body fat rate
*/
private double bfr;
/**
* 皮下脂肪率
*/
private double sfr;
/**
* 内脏脂肪指数
*/
private int uvi;
/**
* 肌肉率
*/
private double rom;
/**
* 基础代谢率
*/
private int bmr;
/**
* 骨骼质量
*/
private double bm;
/**
* 水含量
*/
private double vwc;
/**
* 身体年龄
*/
private int bodyAge;
/**
* 蛋白率
*/
private double pp;

public double getBmi() {
return bmi;
}

public void setBmi(double bmi) {
this.bmi = bmi;
}

public double getBfr() {
return bfr;
}

public void setBfr(double bfr) {
this.bfr = bfr;
}


public double getSfr() {
return sfr;
}

public void setSfr(double sfr) {
this.sfr = sfr;
}

public int getUvi() {
return uvi;
}

public void setUvi(int uvi) {
this.uvi = uvi;
}

public double getRom() {
return rom;
}

public void setRom(double rom) {
this.rom = rom;
}

public int getBmr() {
return bmr;
}

public void setBmr(int bmr) {
this.bmr = bmr;
}

public double getBm() {
return bm;
}

public void setBm(double bm) {
this.bm = bm;
}

public double getVwc() {
return vwc;
}

public void setVwc(double vwc) {
this.vwc = vwc;
}

public int getBodyAge() {
return bodyAge;
}

public void setBodyAge(int bodyAge) {
this.bodyAge = bodyAge;
}

public double getPp() {
return pp;
}

public void setPp(double pp) {
this.pp = pp;
}
}

+ 33
- 0
algorithm-lib/src/main/java/com/elink/aicare/DemoController.java Datei anzeigen

@@ -0,0 +1,33 @@
package com.elink.aicare;

import com.alibaba.fastjson.JSON;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;


@RestController
@RequestMapping(value="/",produces={"application/json;charset=UTF-8"})
public class DemoController {

/**
* 获取体脂数据
*
*/
@RequestMapping(value = "getBodyFat")
public Object sendCode(@RequestBody BodyFatData bodyFatData, HttpServletRequest request, BindingResult result) {
int sex=1;
int age=24;
double weight = 60.5;
int height = 180;
int adc = 500;
System.out.println("品网算法");
System.out.println(JSON.toJSONString(BodyFatAlgorithmUtils.getBodyFatData(0,sex,age,weight,height,adc)));
System.out.println("沃莱算法");
System.out.println(JSON.toJSONString(BodyFatAlgorithmUtils.getBodyFatData(1,sex,age,weight,height,adc)));
return bodyFatData;
}
}

+ 4
- 0
algorithm-lib/src/main/resources/application-dev.properties Datei anzeigen

@@ -0,0 +1,4 @@
spring.application.name=elink-demo

server.port=8001


+ 5
- 0
algorithm-lib/src/main/resources/application.properties Datei anzeigen

@@ -0,0 +1,5 @@
spring.profiles.active=dev

#allow upload size
spring.http.multipart.maxFileSize = 20Mb
spring.http.multipart.maxRequestSize=100Mb

BIN
algorithm-lib/src/main/resources/libMacAlgorithm-aicare.so Datei anzeigen


BIN
algorithm-lib/src/main/resources/libalgorithm-aicare.so Datei anzeigen


Laden…
Abbrechen
Speichern