Bläddra i källkod

获取 血糖指标 和 尿酸指标范围

xgb 6 dagar sedan
förälder
incheckning
c1d4cb5ddc

+ 50 - 30
fs-company-app/src/main/java/com/fs/app/controller/FsUserHealthDataController.java

@@ -1,21 +1,18 @@
 package com.fs.app.controller;
 
-import cn.hutool.core.text.StrBuilder;
+import com.alibaba.fastjson.JSON;
 import com.fs.app.annotation.Login;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.his.config.HealthIndicatorConfig;
 import com.fs.his.domain.FsUserHealthData;
-import com.fs.his.domain.FsUserInfo;
 import com.fs.his.service.IFsUserHealthDataService;
-import com.fs.his.service.IFsUserInfoService;
-import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,8 +28,6 @@ import java.util.Map;
 public class FsUserHealthDataController extends AppBaseController {
     @Autowired
     private IFsUserHealthDataService fsUserHealthDataService;
-    @Autowired
-    private IFsUserInfoService fsUserInfoService;
 
 
     /**
@@ -44,22 +39,21 @@ public class FsUserHealthDataController extends AppBaseController {
     public R list(FsUserHealthData fsUserHealthData,
                   @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                   @RequestParam(required = false, defaultValue = "1000") Integer pageSize
-                  )
-    {
+    ) {
         // 时间格式字段处理
-        if(StringUtils.isNotEmpty(fsUserHealthData.getTimeSearch())){
+        if (StringUtils.isNotEmpty(fsUserHealthData.getTimeSearch())) {
             Map<String, Object> timeMap = new HashMap<>();
             // 时间格式处理 2025-01-21 2025-01-01;2025-01-12 2025-01
-            if(fsUserHealthData.getTimeSearch().contains(";")){
+            if (fsUserHealthData.getTimeSearch().contains(";")) {
                 String[] timeArr = fsUserHealthData.getTimeSearch().split(";");
                 timeMap.put("beginTime", timeArr[0]);
                 timeMap.put("endTime", timeArr[1]);
-            }else if(fsUserHealthData.getTimeSearch().length()==10){
+            } else if (fsUserHealthData.getTimeSearch().length() == 10) {
                 fsUserHealthData.setMeasurementDate(DateUtils.parseDate(fsUserHealthData.getTimeSearch()));
-            }else if(fsUserHealthData.getTimeSearch().length()==7){
+            } else if (fsUserHealthData.getTimeSearch().length() == 7) {
                 // 按月 取当月第一个和最后一天
-                timeMap.put("beginTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,DateUtils.getStartOfMonth(DateUtils.parseDate(fsUserHealthData.getTimeSearch()))));
-                timeMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,DateUtils.getEndOfMonth(DateUtils.parseDate(fsUserHealthData.getTimeSearch()))));
+                timeMap.put("beginTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.getStartOfMonth(DateUtils.parseDate(fsUserHealthData.getTimeSearch()))));
+                timeMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.getEndOfMonth(DateUtils.parseDate(fsUserHealthData.getTimeSearch()))));
             }
             fsUserHealthData.setParams(timeMap);
         }
@@ -67,16 +61,16 @@ public class FsUserHealthDataController extends AppBaseController {
 
         List<FsUserHealthData> list = fsUserHealthDataService.selectFsUserHealthDataList(fsUserHealthData);
 
-        Map<String, Object> data=new HashMap<>();
+        Map<String, Object> data = new HashMap<>();
         data.put("data", new PageInfo<>(list));
 
 
         // 如果测量类型是空 需要查询各等级(无-0,轻微-1,严重-2) 数量
-        if(fsUserHealthData.getLevel()==null){
-            for(int i=0;i<3;i++){
+        if (fsUserHealthData.getLevel() == null) {
+            for (int i = 0; i < 3; i++) {
                 fsUserHealthData.setLevel(i);
                 int num = fsUserHealthDataService.selectFsUserHealthDataListCount(fsUserHealthData);
-                data.put("count"+i, num);
+                data.put("count" + i, num);
             }
         }
 
@@ -84,6 +78,36 @@ public class FsUserHealthDataController extends AppBaseController {
         return R.ok(data);
     }
 
+    /**
+     * 根据检测类型获取 检测指标
+     */
+    @Login
+    @GetMapping("/flag")
+    @ApiOperation(" 根据检测类型获取 检测指标")
+    public R getInfo(@RequestParam("measurementType") Integer measurementType) {
+        // 获取检测指标 (0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI)
+        Map<String, Object> data = new HashMap<>();
+        // 血糖 尿酸 需要
+        HealthIndicatorConfig healthIndicatorConfig = fsUserHealthDataService.parseHealthIndicator();
+        if (measurementType == 2) { // 血糖
+            if (healthIndicatorConfig != null) {
+                String[] key = {"fasting", "post1Hour", "post2Hour"}; // 正常 餐后1小时 餐后2小时
+                for (int i = 0; i < key.length; i++) {
+                    String value = fsUserHealthDataService.getHealthIndicatorValue(healthIndicatorConfig, "bloodGlucose", key[i], "normal");
+                    // value json串转Map对象
+                    data.put(key[i], value);
+                }
+            }
+        } else if (measurementType == 4) {
+            String[] key = new String[]{"male", "female"};
+            for (int i = 0; i < key.length; i++) {
+                String value = fsUserHealthDataService.getHealthIndicatorValue(healthIndicatorConfig, "uricAcid", key[i], "normal");
+                data.put(key[i], value);
+            }
+        }
+        return R.ok().put("data", data);
+    }
+
 
     /**
      * 根据用户ID 查询用户身体检测最新数据
@@ -91,9 +115,8 @@ public class FsUserHealthDataController extends AppBaseController {
     @Login
     @GetMapping("/latest/info")
     @ApiOperation("根据用户ID 获取用户身体检测最新数据")
-    public R getInfo(@RequestParam("userId") Long userId,@RequestParam("measurementType") Integer measurementType)
-    {
-        FsUserHealthData fsUserHealthData=new FsUserHealthData();
+    public R getInfo(@RequestParam("userId") Long userId, @RequestParam("measurementType") Integer measurementType) {
+        FsUserHealthData fsUserHealthData = new FsUserHealthData();
         fsUserHealthData.setUserId(userId);
         fsUserHealthData.setMeasurementType(measurementType);
         fsUserHealthData = fsUserHealthDataService.selectFsUserHealthDataByUserId(fsUserHealthData);
@@ -106,8 +129,7 @@ public class FsUserHealthDataController extends AppBaseController {
     @Login
     @GetMapping("/info")
     @ApiOperation("根据ID 获取用户身体检测最新数据")
-    public R getInfoById(@RequestParam("id") Long id)
-    {
+    public R getInfoById(@RequestParam("id") Long id) {
         FsUserHealthData fsUserHealthData = fsUserHealthDataService.selectFsUserHealthDataById(id);
         return R.ok().put("data", fsUserHealthData);
     }
@@ -130,8 +152,7 @@ public class FsUserHealthDataController extends AppBaseController {
     @Login
     @PostMapping("/update")
     @ApiOperation("修改用户身体检测数据")
-    public R edit(@RequestBody FsUserHealthData fsUserHealthData)
-    {
+    public R edit(@RequestBody FsUserHealthData fsUserHealthData) {
         // 修改检测数据信息
         fsUserHealthDataService.updateFsUserHealthDataAndLevel(fsUserHealthData);
         return R.ok();
@@ -141,11 +162,10 @@ public class FsUserHealthDataController extends AppBaseController {
      * 删除用户身体检测数据
      */
     @Login
-	@GetMapping("/delete")
+    @GetMapping("/delete")
     @ApiOperation("删除用户身体检测数据")
-    public R remove(@RequestParam Long id)
-    {
-        if(fsUserHealthDataService.deleteFsUserHealthDataById(id)<=0){
+    public R remove(@RequestParam Long id) {
+        if (fsUserHealthDataService.deleteFsUserHealthDataById(id) <= 0) {
             return R.error("用户身体检测数据删除失败");
         }
         return R.ok();

+ 2 - 3
fs-company-app/src/main/java/com/fs/app/controller/FsUserHealthProfileController.java

@@ -71,7 +71,7 @@ public class FsUserHealthProfileController extends AppBaseController {
         FsUserHealthData query = new FsUserHealthData();
         query.setUserId(userId);
         Map<String, Object> dataMap = new HashMap<>();
-        for(int i = 0; i < 6; i++){
+        for (int i = 0; i < 6; i++) {
             query.setMeasurementType(i);
             FsUserHealthData healthData = fsUserHealthDataService.selectFsUserHealthDataByUserId(query);
             dataMap.put(String.valueOf(i), healthData);
@@ -80,7 +80,7 @@ public class FsUserHealthProfileController extends AppBaseController {
 
         // 查询健康档案
         FsUserHealthProfile profile = fsUserHealthProfileService.selectFsUserHealthProfileByUserId(userId);
-        if(profile != null){
+        if (profile != null) {
             infoDTO.setSymptomHistory(profile.getSymptomHistory());
             infoDTO.setOtherMedicalHistory(profile.getOtherMedicalHistory());
         }
@@ -89,7 +89,6 @@ public class FsUserHealthProfileController extends AppBaseController {
     }
 
 
-
     /**
      * 新增用户健康档案
      */

+ 1 - 1
fs-company-app/src/main/java/com/fs/app/controller/FsUserInfoController.java

@@ -60,7 +60,7 @@ public class FsUserInfoController extends AppBaseController {
         FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(userId);
         if (fsUserInfo == null) {
             return R.error("用户不存在");
-        }else {
+        } else {
             fsUserInfo.setAge(DateUtils.getAge(fsUserInfo.getBirthdate()));
         }
         return R.ok().put("data", fsUserInfo);

+ 19 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserHealthDataService.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.his.config.HealthIndicatorConfig;
 import com.fs.his.domain.FsUserHealthData;
 import com.fs.his.domain.FsUserHealthProfile;
 
@@ -54,6 +55,24 @@ public interface IFsUserHealthDataService extends IService<FsUserHealthData>{
      */
     int deleteFsUserHealthDataById(Long id);
 
+    /**
+     * @Description: 获取健康指标参数配置
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2025/9/1 18:01
+     */
+    HealthIndicatorConfig parseHealthIndicator();
+
+    /**
+     * @Description: 解析获取最新指标值
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2025/9/1 17:57
+     */
+    String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level);
+
     /**
      * @Description: 计算用户健康指标等级
      * @Param:  [fsUserHealthData]

+ 5 - 7
fs-service/src/main/java/com/fs/his/service/impl/FsUserHealthDataServiceImpl.java

@@ -134,7 +134,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
 
     /**
      * @Description: 更新用户身体检测数据
-     * @Param:  fsUserHealthData
+     * @Param: fsUserHealthData
      * @Return:
      * @Author xgb
      * @Date 2025/9/1 10:50
@@ -219,8 +219,6 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
     }
 
 
-
-
     /**
      * @Description: 解析健康指标
      * @Param: []
@@ -228,7 +226,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
      * @Author xgb
      * @Date 2025/8/28 9:10
      */
-    private HealthIndicatorConfig parseHealthIndicator() {
+    public HealthIndicatorConfig parseHealthIndicator() {
         String configKey = Constants.SYS_CONFIG_KEY + HEALTH_INDICATOR_KEY;
         String str = redisCache.getCacheObject(Constants.SYS_CONFIG_KEY + HEALTH_INDICATOR_KEY);
         // str JSON串转 map
@@ -257,7 +255,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
      * @param subType 子类型 (bloodPressure时使用,systolic 收缩压, diastolic 舒张压)
      * @return 指标值
      */
-    private String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level, String subType) {
+     public String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level, String subType) {
         if (config == null) {
             throw new ServiceException("健康指标配置不存在,请联系管理人员");
         }
@@ -354,7 +352,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
      * @param level  指标级别
      * @return 指标值
      */
-    private String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level) {
+    public String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level) {
         return getHealthIndicatorValue(config, type, key, level, null);
     }
 
@@ -601,7 +599,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             int level = getHealthIndicatorLevel(fsUserHealthData);
             fsUserHealthData.setLevel(level);
             fsUserHealthData.setValue1(value1);
-        }else if (type == 0 || type == 1) {
+        } else if (type == 0 || type == 1) {
             // 获取性别信息
             FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
             if (user == null || StringUtils.isEmpty(user.getSex())) {

+ 11 - 17
fs-service/src/main/java/com/fs/his/service/impl/FsUserHealthProfileServiceImpl.java

@@ -1,16 +1,14 @@
 package com.fs.his.service.impl;
 
-import java.util.List;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.fs.his.mapper.FsUserHealthProfileMapper;
 import com.fs.his.domain.FsUserHealthProfile;
+import com.fs.his.mapper.FsUserHealthProfileMapper;
 import com.fs.his.service.IFsUserHealthProfileService;
+import org.springframework.stereotype.Service;
 
 /**
  * 用户健康档案Service业务层处理
- * 
+ *
  * @author fs
  * @date 2025-08-27
  */
@@ -19,50 +17,46 @@ public class FsUserHealthProfileServiceImpl extends ServiceImpl<FsUserHealthProf
 
     /**
      * 查询用户健康档案
-     * 
+     *
      * @param userId 用户健康档案主键
      * @return 用户健康档案
      */
     @Override
-    public FsUserHealthProfile selectFsUserHealthProfileByUserId(Long userId)
-    {
+    public FsUserHealthProfile selectFsUserHealthProfileByUserId(Long userId) {
         return baseMapper.selectFsUserHealthProfileByUserId(userId);
     }
 
     /**
      * 新增用户健康档案
-     * 
+     *
      * @param fsUserHealthProfile 用户健康档案
      * @return 结果
      */
     @Override
-    public int insertFsUserHealthProfile(FsUserHealthProfile fsUserHealthProfile)
-    {
+    public int insertFsUserHealthProfile(FsUserHealthProfile fsUserHealthProfile) {
         return baseMapper.insertFsUserHealthProfile(fsUserHealthProfile);
     }
 
     /**
      * 修改用户健康档案
-     * 
+     *
      * @param fsUserHealthProfile 用户健康档案
      * @return 结果
      */
     @Override
-    public int updateFsUserHealthProfile(FsUserHealthProfile fsUserHealthProfile)
-    {
+    public int updateFsUserHealthProfile(FsUserHealthProfile fsUserHealthProfile) {
         return baseMapper.updateFsUserHealthProfile(fsUserHealthProfile);
     }
 
 
     /**
      * 删除用户健康档案信息
-     * 
+     *
      * @param userId 用户健康档案主键
      * @return 结果
      */
     @Override
-    public int deleteFsUserHealthProfileByUserId(Long userId)
-    {
+    public int deleteFsUserHealthProfileByUserId(Long userId) {
         return baseMapper.deleteFsUserHealthProfileByUserId(userId);
     }
 }