|
@@ -0,0 +1,174 @@
|
|
|
+package com.fs.app.controller;
|
|
|
+
|
|
|
+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.service.IFsUserHealthDataService;
|
|
|
+import com.github.pagehelper.PageInfo;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 用户身体检测数据Controller
|
|
|
+ *
|
|
|
+ * @author fs
|
|
|
+ * @date 2025-08-27
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/app/fs/health/data")
|
|
|
+@Api(tags = "用户身体检测数据血糖,尿酸,血压等")
|
|
|
+public class FsUserHealthDataController extends AppBaseController {
|
|
|
+ @Autowired
|
|
|
+ private IFsUserHealthDataService fsUserHealthDataService;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询用户身体检测数据列表
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @GetMapping("/list")
|
|
|
+ @ApiOperation("获取用户列表信息")
|
|
|
+ public R list(FsUserHealthData fsUserHealthData,
|
|
|
+ @RequestParam(required = false, defaultValue = "1") Integer pageNum,
|
|
|
+ @RequestParam(required = false, defaultValue = "1000") Integer pageSize
|
|
|
+ ) {
|
|
|
+ // 时间格式字段处理
|
|
|
+ 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(";")) {
|
|
|
+ String[] timeArr = fsUserHealthData.getTimeSearch().split(";");
|
|
|
+ timeMap.put("beginTime", timeArr[0]);
|
|
|
+ timeMap.put("endTime", timeArr[1]);
|
|
|
+ } else if (fsUserHealthData.getTimeSearch().length() == 10) {
|
|
|
+ fsUserHealthData.setMeasurementDate(DateUtils.parseDate(fsUserHealthData.getTimeSearch()));
|
|
|
+ } 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()))));
|
|
|
+ }
|
|
|
+ fsUserHealthData.setParams(timeMap);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<FsUserHealthData> list = fsUserHealthDataService.selectFsUserHealthDataList(fsUserHealthData);
|
|
|
+
|
|
|
+ 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++) {
|
|
|
+ fsUserHealthData.setLevel(i);
|
|
|
+ int num = fsUserHealthDataService.selectFsUserHealthDataListCount(fsUserHealthData);
|
|
|
+ data.put("count" + i, num);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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 查询用户身体检测最新数据
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @GetMapping("/latest/info")
|
|
|
+ @ApiOperation("根据用户ID 获取用户身体检测最新数据")
|
|
|
+ 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);
|
|
|
+ return R.ok().put("data", fsUserHealthData);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据ID 查询用户身体检测最新数据
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @GetMapping("/info")
|
|
|
+ @ApiOperation("根据ID 获取用户身体检测最新数据")
|
|
|
+ public R getInfoById(@RequestParam("id") Long id) {
|
|
|
+ FsUserHealthData fsUserHealthData = fsUserHealthDataService.selectFsUserHealthDataById(id);
|
|
|
+ return R.ok().put("data", fsUserHealthData);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增用户身体检测数据
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @PostMapping("/add")
|
|
|
+ @ApiOperation("新增用户身体检测数据")
|
|
|
+ public R add(@RequestBody FsUserHealthData fsUserHealthData) {
|
|
|
+ // 登记检测数据信息
|
|
|
+ fsUserHealthDataService.addHealthData(fsUserHealthData);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改用户身体检测数据
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @PostMapping("/update")
|
|
|
+ @ApiOperation("修改用户身体检测数据")
|
|
|
+ public R edit(@RequestBody FsUserHealthData fsUserHealthData) {
|
|
|
+ // 修改检测数据信息
|
|
|
+ fsUserHealthDataService.updateFsUserHealthDataAndLevel(fsUserHealthData);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除用户身体检测数据
|
|
|
+ */
|
|
|
+ @Login
|
|
|
+ @GetMapping("/delete")
|
|
|
+ @ApiOperation("删除用户身体检测数据")
|
|
|
+ public R remove(@RequestParam Long id) {
|
|
|
+ if (fsUserHealthDataService.deleteFsUserHealthDataById(id) <= 0) {
|
|
|
+ return R.error("用户身体检测数据删除失败");
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+}
|