|
@@ -101,18 +101,66 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
|
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
|
List<FsUserHealthData> list = selectFsUserHealthDataList(fsUserHealthData);
|
|
|
- if(list!=null && !list.isEmpty() && fsUserHealthData.getTimeSearch().contains(";")){// 加工数据,返回星期
|
|
|
- list.forEach(item -> {
|
|
|
+
|
|
|
+ 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 = selectFsUserHealthDataListCount(fsUserHealthData);
|
|
|
+ data.put("count" + i, num);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description: 查询用户身体检测数据列表 获取最新的数据
|
|
|
+ * @Param:
|
|
|
+ * @Return:
|
|
|
+ * @Author xgb
|
|
|
+ * @Date 2025/9/5 16:01
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> selectFsUserHealthDataListInfoLatest(FsUserHealthData fsUserHealthData, Integer pageNum, Integer pageSize) {
|
|
|
+ if (StringUtils.isEmpty(fsUserHealthData.getTimeSearch())) {
|
|
|
+ throw new ServiceException("查询时间不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<FsUserHealthData> list = Collections.emptyList();
|
|
|
+ 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]);
|
|
|
+ // 获取每天最新的数据
|
|
|
+ fsUserHealthData.setParams(timeMap);
|
|
|
+ list = baseMapper.selectFsUserHealthDataListInfoLatest(fsUserHealthData);
|
|
|
+ list.forEach(item -> {// 设置周
|
|
|
item.setWeek(DateUtils.getWeek(item.getMeasurementDate()));
|
|
|
});
|
|
|
-
|
|
|
+ } else if (fsUserHealthData.getTimeSearch().length() == 10) {
|
|
|
+ fsUserHealthData.setMeasurementDate(DateUtils.parseDate(fsUserHealthData.getTimeSearch()));
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ list = selectFsUserHealthDataList(fsUserHealthData);
|
|
|
+ } 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 = baseMapper.selectFsUserHealthDataListInfoLatest(fsUserHealthData);
|
|
|
}
|
|
|
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
data.put("data", new PageInfo<>(list));
|
|
|
|
|
|
-
|
|
|
- // 如果测量类型是空 需要查询各等级(无-0,轻微-1,严重-2) 数量
|
|
|
+ // 如果测量等级是空 需要查询各等级(无-0,轻微-1,严重-2) 数量
|
|
|
if (fsUserHealthData.getLevel() == null) {
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
fsUserHealthData.setLevel(i);
|
|
@@ -120,6 +168,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
data.put("count" + i, num);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return data;
|
|
|
}
|
|
|
|
|
@@ -249,7 +298,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
case 4: // 尿酸
|
|
|
// 根据userId查询用户信息
|
|
|
FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
|
|
|
- if (user.getSex()==null || "2".equals(String.valueOf(user.getSex()))) {
|
|
|
+ if (user.getSex() == null || "2".equals(String.valueOf(user.getSex()))) {
|
|
|
throw new ServiceException("尿酸判断需要性别信息,请完善用户性别信息");
|
|
|
}
|
|
|
fsUserHealthData.setSex(user.getSex());
|
|
@@ -302,7 +351,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
* @Author xgb
|
|
|
* @Date 2025/9/3 10:55
|
|
|
*/
|
|
|
- private String parseHealthIndicatorConfig(Map<String, Object> map,String key,String level) {
|
|
|
+ private String parseHealthIndicatorConfig(Map<String, Object> map, String key, String level) {
|
|
|
if (StringUtils.equalsAny(key, "severity", "male", "female")) {
|
|
|
// 处理严重程度级别
|
|
|
List<Map<String, Object>> severityList = (List<Map<String, Object>>) map.get(key);
|
|
@@ -321,7 +370,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- private String parseHealthIndicatorConfigTwo(Map<String, Object> map,String key,String level,String subType) {
|
|
|
+ private String parseHealthIndicatorConfigTwo(Map<String, Object> map, String key, String level, String subType) {
|
|
|
if ("severity".equals(key)) {
|
|
|
// 处理血压严重程度级别
|
|
|
List<Map<String, Object>> severityList = (List<Map<String, Object>>) map.get("severity");
|
|
@@ -351,7 +400,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
* @param subType 子类型 (bloodPressure时使用,systolic 收缩压, diastolic 舒张压)
|
|
|
* @return 指标值
|
|
|
*/
|
|
|
- public 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("健康指标配置不存在,请联系管理人员");
|
|
|
}
|
|
@@ -454,9 +503,9 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
int sex = fsUserHealthData.getSex();
|
|
|
String key;
|
|
|
|
|
|
- if (0==sex) { // 男
|
|
|
+ if (0 == sex) { // 男
|
|
|
key = HealthIndicatorConfig.MALE;
|
|
|
- } else if (1==sex) { // 女
|
|
|
+ } else if (1 == sex) { // 女
|
|
|
key = HealthIndicatorConfig.FEMALE;
|
|
|
} else {
|
|
|
throw new ServiceException("不支持的性别类型: " + sex);
|
|
@@ -567,7 +616,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
if (fsUserHealthProfile.getHyperuricemiaValue() != null) {
|
|
|
// 查询用户信息获取 性别
|
|
|
FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
|
|
|
- if (fsUserInfo == null || fsUserInfo.getSex()==null) {
|
|
|
+ if (fsUserInfo == null || fsUserInfo.getSex() == null) {
|
|
|
throw new ServiceException("用户已注销或基础信息未维护性别不存在");
|
|
|
}
|
|
|
|
|
@@ -586,7 +635,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
if (fsUserHealthProfile.getWaistCircumference() != null) {
|
|
|
// 查询用户信息获取 性别
|
|
|
FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
|
|
|
- if (fsUserInfo == null || fsUserInfo.getSex()==null) {
|
|
|
+ if (fsUserInfo == null || fsUserInfo.getSex() == null) {
|
|
|
throw new ServiceException("用户已注销或性别不存在");
|
|
|
}
|
|
|
|
|
@@ -605,7 +654,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
if (fsUserHealthProfile.getHipCircumference() != null) {
|
|
|
// 查询用户信息获取 性别
|
|
|
FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
|
|
|
- if (fsUserInfo == null || fsUserInfo.getSex()== null) {
|
|
|
+ if (fsUserInfo == null || fsUserInfo.getSex() == null) {
|
|
|
throw new ServiceException("用户已注销或性别信息不存在");
|
|
|
}
|
|
|
/** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
|
|
@@ -635,7 +684,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
if (type == 0 || type == 1 || type == 4) { // 尿酸查询等级信息时需要性别信息
|
|
|
// 根据userId 查询用户信息
|
|
|
FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
|
|
|
- if (user.getSex()==null || "2".equals(String.valueOf(user.getSex()))) {
|
|
|
+ if (user.getSex() == null || "2".equals(String.valueOf(user.getSex()))) {
|
|
|
throw new ServiceException("尿酸判断需要性别信息,请完善用户性别信息");
|
|
|
}
|
|
|
fsUserHealthData.setSex(user.getSex());
|
|
@@ -653,7 +702,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
|
|
|
int level = getHealthIndicatorLevel(fsUserHealthData);
|
|
|
fsUserHealthData.setLevel(level);
|
|
|
fsUserHealthData.setValue1(value1);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new ServiceException("不支持的测量类型");
|
|
|
}
|
|
|
// 登记检测数据信息
|