Просмотр исходного кода

feat(health): 添加血糖血压心率体格数据模型

- 新增血糖测量类型枚举BloodGlucoseType
- 创建血糖数据实体BloodGlucoseData
- 创建血压数据实体BloodPressureData
- 创建心率数据实体HeartRateData
- 创建体格数据实体PhysicalData
- 定义各数据表字段及Swagger文档注解
- 实现基础实体类继承和字段映射
mcbaiyun 2 месяцев назад
Родитель
Сommit
10dd94a3f0

+ 44 - 0
src/main/java/work/baiyun/chronicdiseaseapp/enums/BloodGlucoseType.java

@@ -0,0 +1,44 @@
+package work.baiyun.chronicdiseaseapp.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * 血糖测量类型枚举
+ */
+public enum BloodGlucoseType {
+    FASTING("FASTING", "空腹", "早餐前测量"),
+    AFTER_BREAKFAST("AFTER_BREAKFAST", "早餐后", "早餐后2小时测量"),
+    BEFORE_LUNCH("BEFORE_LUNCH", "午餐前", "午餐前测量"),
+    AFTER_LUNCH("AFTER_LUNCH", "午餐后", "午餐后2小时测量"),
+    BEFORE_DINNER("BEFORE_DINNER", "晚餐前", "晚餐前测量"),
+    AFTER_DINNER("AFTER_DINNER", "晚餐后", "晚餐后2小时测量"),
+    BEFORE_BED("BEFORE_BED", "睡前", "睡前测量");
+
+    @EnumValue
+    private final String code;
+    private final String name;
+    private final String description;
+
+    BloodGlucoseType(String code, String name, String description) {
+        this.code = code;
+        this.name = name;
+        this.description = description;
+    }
+
+    public String getCode() { return code; }
+
+    public String getName() { return name; }
+
+    public String getDescription() { return description; }
+
+    @Override
+    public String toString() { return name; }
+
+    public static BloodGlucoseType fromCode(String code) {
+        if (code == null) return null;
+        for (BloodGlucoseType t : BloodGlucoseType.values()) {
+            if (t.code.equals(code)) return t;
+        }
+        throw new IllegalArgumentException("Unknown BloodGlucoseType code: " + code);
+    }
+}

+ 32 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/po/BloodGlucoseData.java

@@ -0,0 +1,32 @@
+package work.baiyun.chronicdiseaseapp.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "血糖数据表")
+@TableName("t_blood_glucose_data")
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BloodGlucoseData extends BaseEntity {
+    @Schema(description = "用户ID")
+    @TableField("user_id")
+    private Long userId;
+
+    @Schema(description = "测量时间")
+    @TableField("measure_time")
+    private LocalDateTime measureTime;
+
+    @Schema(description = "血糖测量类型")
+    @TableField("type")
+    private String type;
+
+    @Schema(description = "血糖值")
+    @TableField("value")
+    private BigDecimal value;
+}

+ 31 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/po/BloodPressureData.java

@@ -0,0 +1,31 @@
+package work.baiyun.chronicdiseaseapp.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "血压数据表")
+@TableName("t_blood_pressure_data")
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BloodPressureData extends BaseEntity {
+    @Schema(description = "用户ID")
+    @TableField("user_id")
+    private Long userId;
+
+    @Schema(description = "收缩压(mmHg)")
+    @TableField("systolic_pressure")
+    private Integer systolicPressure;
+
+    @Schema(description = "舒张压(mmHg)")
+    @TableField("diastolic_pressure")
+    private Integer diastolicPressure;
+
+    @Schema(description = "测量时间")
+    @TableField("measure_time")
+    private LocalDateTime measureTime;
+}

+ 27 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/po/HeartRateData.java

@@ -0,0 +1,27 @@
+package work.baiyun.chronicdiseaseapp.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "心率数据表")
+@TableName("t_heart_rate_data")
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HeartRateData extends BaseEntity {
+    @Schema(description = "用户ID")
+    @TableField("user_id")
+    private Long userId;
+
+    @Schema(description = "心率(次/分钟)")
+    @TableField("heart_rate")
+    private Integer heartRate;
+
+    @Schema(description = "测量时间")
+    @TableField("measure_time")
+    private LocalDateTime measureTime;
+}

+ 32 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/po/PhysicalData.java

@@ -0,0 +1,32 @@
+package work.baiyun.chronicdiseaseapp.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "体格数据表")
+@TableName("t_physical_data")
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PhysicalData extends BaseEntity {
+    @Schema(description = "用户ID")
+    @TableField("user_id")
+    private Long userId;
+
+    @Schema(description = "身高(cm)")
+    @TableField("height")
+    private BigDecimal height;
+
+    @Schema(description = "体重(kg)")
+    @TableField("weight")
+    private BigDecimal weight;
+
+    @Schema(description = "测量时间")
+    @TableField("measure_time")
+    private LocalDateTime measureTime;
+}